考虑下面定义的数据框df
df = pd.DataFrame({
'ID': [111, 222, 444],
'date': ['21-12-2016', '23-12-2016', '26-12-2016'],
'url': ['vk.com', 'twitter.com', 'twitter.com']})
print(df)
ID date url
0 111 21-12-2016 vk.com
1 222 23-12-2016 twitter.com
2 444 26-12-2016 twitter.com
以及dates
dates = ['21-12-2016', '23-12-2016']
我希望能够使用df
过滤dates
,以便我获得
ID date url
0 111 21-12-2016 vk.com
1 222 23-12-2016 twitter.com
到目前为止,我已经尝试了
df['date'] == dates
但我得到ValueError
ValueError:数组的长度不同:3 vs 2
答案 0 :(得分:1)
这样的东西?
import pandas as pd
# df = pd.read_clipboard()
dates = ['21-12-2016', '23-12-2016']
print df[df.date.isin(dates)]
输出:
ID url date
0 111 vk.com 21-12-2016
1 222 twitter.com 23-12-2016
答案 1 :(得分:1)
您可以使用query
df.query('date in @dates')
ID date url
0 111 21-12-2016 vk.com
1 222 23-12-2016 twitter.com
使用date
作为索引并使用loc
df.set_index('date').loc[dates].reset_index()
date ID url
0 21-12-2016 111 vk.com
1 23-12-2016 222 twitter.com
使用numpy
广播
df[(df.date.values[:, None] == dates).any(1)]
ID date url
0 111 21-12-2016 vk.com
1 222 23-12-2016 twitter.com