我有一个包含多个时间/日期列的数据框:
{'city': {0: 'HOUSTON', 1: 'HOUSTON', 2: 'HOUSTON', 3: 'HOUSTON', 4: 'HOUSTON'}, 'timeDate_1': {0: Timestamp('2017-07-01 08:00:00'), 1: Timestamp('2017-07-01 08:00:00'), 2: Timestamp('2017-07-01 08:00:00'), 3: Timestamp('2017-07-01 08:00:00'), 4: Timestamp('2017-07-01 08:00:00')}, 'hour': {0: 2, 1: 2, 2: 3, 3: 4, 4: 4}, 'timeDate_2': {0: Timestamp('2017-01-07 00:00:00'), 1: Timestamp('2017-01-07 00:00:00'), 2: Timestamp('2017-01-07 00:00:00'), 3: Timestamp('2017-01-07 00:00:00'), 4: Timestamp('2017-01-07 00:00:00')}}
我需要在这些列之间进行匹配-就像timeDate_1
等于timeDate_2
(或hour
列)一样,并删除日期和时间不匹配的所有行。显然,最简单的方法是拥有两个不同的表并仅按日期/时间联接,但是我现在太过深入。
每列的dtypes
是:
timeDate_1 datetime64[ns]
hour int64
timeDate_2 datetime64[ns]
我执行isin
操作时哪个错误:
df[df['timeDate_1'].isin(['timeDate_2', 'hour']) ]
ValueError: ('Unknown string format:', 'timeDate_2')
最简单的方法是什么? (除了解耦所有列并进行简单的连接)
答案 0 :(得分:0)
尝试一下:
df[
df['timeDate_1'].isin(df['timeDate_2'])
| df['timeDate_1'].dt.hour.isin(df['hour'])
]