熊猫:如何从df得到一些数据

时间:2016-12-29 06:06:40

标签: python pandas

考虑下面定义的数据框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

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