根据另一列的特定内容打印列内容

时间:2015-04-10 04:06:19

标签: pandas filter

我有一个包含trip_id,service_id等列的DataFrame,比如

trip_id     service_id
1            weekday
2            weekday
3            weekday
4            saturday
5            saturday
6            holiday
7            sunday

我想分别为所有星期六和假日打印所有“工作日”的trip_id。我尝试了

join_df.query(join_df['service_id'] == 'weekday')

方式,但它似乎并不合适。我也试过

print join_df[join_df.service_id =='weekdays']

没有用。输出空数据帧。

请有人帮我这个。 谢谢

2 个答案:

答案 0 :(得分:0)

这看起来像一个拼写错误(工作日不是工作日),无论是后者还是使用loc都应该有效:

In [11]: df[df.service_id == 'weekday']
Out[11]:
   trip_id service_id
0        1    weekday
1        2    weekday
2        3    weekday

In [12]: df.loc[df.service_id == 'weekday']
Out[12]:
   trip_id service_id
0        1    weekday
1        2    weekday
2        3    weekday

您也可以使用查询,但语法不正确:

In [13]: df.query("service_id == 'weekday'")
Out[13]:
   trip_id service_id
0        1    weekday
1        2    weekday
2        3    weekday

答案 1 :(得分:0)

如果您有以下DataFrame:

       service_id
trip_id           
1          weekday
2          weekday
3          weekday
4         saturday
5         saturday
6          holiday
7           sunday

然后,您可以遍历service_id列中的所有唯一值,并使用boolean indexing打印出原始DataFrame的子集。例如:

for grp in df['service_id'].unique():
    print df[df['service_id'] == grp]

输出:

        service_id
trip_id           
1          weekday
2          weekday
3          weekday

        service_id
trip_id           
4         saturday
5         saturday

        service_id
trip_id           
6          holiday

        service_id
trip_id           
7           sunday