2016-12-29 94 views
-2

考虑下面熊猫:如何从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 

定义数据帧df,我希望能够过滤dfdates这样,我得到

dates

dates = ['21-12-2016', '23-12-2016'] 

列表获取

ID  date   url 
0 111 21-12-2016  vk.com 
1 222 23-12-2016 twitter.com 

到目前为止,我已经试过

df['date'] == dates 

但我得到一个ValueError

ValueError: Arrays were different lengths: 3 vs 2

+1

堆栈溢出不是一个代码编写的服务。你能告诉我们你试过了什么吗? –

回答

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

您可以使用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