抽出するための式の方向性は合っています。df6とかdfが突然出てくるので正しいかどうかは、あなたにしかわかりませんが。
問題は、開始日と終了日のデータの種類が文字列(str)になっているため、正常に日付の比較を行なえていないことです。
解決策としては、CSVファイルなどからデータを読み込む際にparse_dates
オプション引数を指定するか、読み込んだ後でpd.to_datetime()
を利用して、開始日や終了日の列データ(Series)をdatetime64[ns]型に変換する必要があります。このとき、Seriesの各要素(1個の日付)はTimestamp型になり、日付による大小の比較を正しく行なえます。
Python
1import pandas as pd
2import io
3
4txt = """
5開始日,終了日
62015/1/4,2014/12/31
72014/7/2,2014/12/12
82014/5/9,2013/12/1
92014/6/4,2014/12/31
102014/6/16,2014/12/3
112014/7/16,2014/12/31
122014/7/5,2014/12/31
132014/7/16,2012/3/5
14"""
15
16pd.set_option('display.unicode.east_asian_width', True)
17
18# df = pd.read_csv(io.StringIO(txt), parse_dates=['開始日', '終了日'])
19df = pd.read_csv(io.StringIO(txt))
20df['開始日'] = pd.to_datetime(df['開始日'])
21df['終了日'] = pd.to_datetime(df['終了日'])
22
23print(df[df["開始日"] > df["終了日"]])
result
1 開始日 終了日
20 2015-01-04 2014-12-31
32 2014-05-09 2013-12-01
47 2014-07-16 2012-03-05
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。