Pandas DataFrame子串匹配不起作用

时间:2015-11-23 02:53:15

标签: python string pandas

我的数据框包含发件人名称,我只想显示某些发件人。 数据框中的列名是发件人。

1                                         Tin, Heather-LK
2                                         Wong, Wan Sing
3                                     Employee Engagement
4                                           Loh, Kelly-KK
5                           EXCHANGE ADMINISTRATIVE GROUP
6                                               CorpComms
7                                            Loo Wai Long
8                                         Tang, Heather-L
9                                                  Oracle

代码

df[df.Sender.str.contains('Tin', na=False)]

结果是空白数据框。我不明白字符串属性包含我正在寻找的部分。

以下是数据框的信息

1378
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1378 entries, 0 to 1377
Data columns (total 4 columns):
Sender           1375 non-null object
Content          1378 non-null object
Received Time    1378 non-null object
Replied Time     189 non-null object
dtypes: object(4)
memory usage: 53.8+ KB

如果我自己重建框架,它就可以了。但似乎无法使用它来处理我通过Outlook MAPI提取的原始数据。

2 个答案:

答案 0 :(得分:4)

好的,所以df.Sender.map(type).head()的结果表明Sender列中的项目实际上不是字符串,而是某些其他类的实例(可能是Outlook API特有的东西?)。 object dtype列可以包含任何类型的对象,因此有时会遇到类似这样的问题,您需要检查单个单元格中的类型以了解发生了什么。

您可以尝试将这些项目显式转换为字符串以查看是否可以解决您的问题:

df['Sender_str'] = df['Sender'].map(str)
df.loc[df['Sender_str'].str.contains('Tin', na=False), :]

答案 1 :(得分:-1)

如果我正确理解您的问题,您可以使用.isin()

find = df[df['Sender'].isin(['Tin'])]
print (find)