错误过滤pandas dataframe中的列表

时间:2016-04-20 21:26:18

标签: python pandas filter dataframe

通常,按如下方式过滤pandas Dataframe:

import pandas as pd
df = pd.read_csv(...)
df_filtered = df[df['column'] == value]

我有以下数据框df1

numbers    letters   other_columns
0          [A]     ....
1          [A]     ....
2          [C]     ....
3          [B]     ....
4          [B]     ....
5          [A]     ....
...        ....

我认为letters中的条目是字符串,但实际上是列表:

type(df1.letters.ix[0]) 

输出list

因此,我尝试将数据框df1过滤为只有[A]行。

only_A应该是这样的:

numbers    letters   other_columns
0          [A]     ....
1          [A]     ....
5          [A]     ....
...        ....

但是,如果我尝试使用代码

进行过滤
only_A = df1[df1['letters'] == list('A')]

我收到错误,ValueError

ValueError: Arrays were different lengths: 3076 vs 1

过滤此数据框的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

如果您认为字母的内容是字符串,您可以将列的列转换为字符串吗?像这样的东西:

df['letters'] = df['letters'].apply(lambda x: ''.join(x)) 

然后像往常一样进行过滤

答案 1 :(得分:2)

您可以使用Series.str.join进行过滤,而无需更改DataFrame。

df[df['letters'].str.join('') == 'A']