【问题标题】:.isin() function is returning an empty set when filtering an object column in DataFrame.isin() 函数在过滤 DataFrame 中的对象列时返回一个空集
【发布时间】:2021-11-15 21:10:53
【问题描述】:

读取和附加excel文件以创建DataFrame:

import pandas as pd
import os

folder = r'C:\mypathtodocuments'
files = os.listdir(folder)

df = pd.DataFrame()

for file in files:
    if file.endswith('.xlsx'):
        df = df.append(pd.read_excel(os.path.join(folder,file)))

#Drop extra columns from wrong data
df1 = df[['FIRST_NM', 'LAST_NM', 'CITY_AD']]

CITY_AD专栏预览:

>>> df1["CITY_AD"]

0      EL PASO
1      HOUSTON
2      HOUSTON
3      CONROE
4      MCKINNEY
5      MCKINNEY
6      KATY
7      TOMBALL
8      TOMBALL
9      SPRING
10     SPRING

使用 .isin() 函数过滤 DataFrame 以仅包含城市 HOUSTONCONROE

df1[df1["CITY_AD"].isin(["HOUSTON","CONROE"])]

这会返回一个空集...我怎样才能让它正确过滤?

【问题讨论】:

  • 提供一个包含原始数据框的可重现示例。
  • 鉴于这是来自 excel 文件,是否可能在列中有额外的不可打印字符?例如,可能是" HOUSTON""HOUSTON "print(df1.head().to_dict()) 的输出真的很有帮助。
  • 尝试在isin行之前添加这一行:df1["CITY_AD"] = df1["CITY_AD"].str.strip()@Joe

标签: python pandas dataframe isin


【解决方案1】:

试试这个:

df1["CITY_AD"] = df1["CITY_AD"].str.strip()
df1[df1["CITY_AD"].isin(["HOUSTON","CONROE"])]

【讨论】:

  • 是的,使用 str.strip() 解决了这个问题!谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-04-23
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
相关资源
最近更新 更多