【问题标题】:Python strip method doesn't work in a dataframe columnPython strip 方法在数据框列中不起作用
【发布时间】:2021-11-17 12:04:21
【问题描述】:

我有一个数据框,其中一列是城市名称。为了检查我是否有重复值,我创建了一个df_hotels['city_name'].value_counts().sort_values。当我显示结果时,我可以看到我有重复值,因为某些城市的左侧有一个空字符。You can check that。 (通常我每行数为 25)

问题是当我尝试制作df_hotels['city_name'] = df_hotels['city_name'].str.strip()(或lstrip)时它不起作用,左侧的空字符仍然存在。

仅供参考,给出上下文:列类型是一个对象,我创建了一个带有简单 pd.read_json 的 json 格式的数据框。

感谢您的帮助。

【问题讨论】:

标签: python dataframe methods strip


【解决方案1】:

您可以使用 dropna 函数删除重复项,如文档 (link) 中所述。

如果您想使用 pandas 对列应用函数,则需要使用 apply 方法,在某些情况下还需要使用 lambda 函数。这是一个例子:

df_hotels['city_name'] = df_hotels['city_name'].apply(lambda x: x.str.strip())

【讨论】:

  • 嗨!谢谢,但我不想删除重复项,我需要保留它们。如果我有 10 个“巴黎”和 15 个“巴黎”,我想要 25 个“巴黎”。我尝试了apply方法,但空白仍然存在......
  • 不知道为什么对你不起作用,欢迎你发送数据集,我会尽力帮助的。
  • 这里是从数据框导出的 csv 链接:drive.google.com/file/d/1cLDetz00W4JKykPCCWvbJpSbnkVsGLI6/…
  • 这对你有用: import pandas as pd df_hotels = pd.read_csv('data.csv') df_hotels['city_name'] = df_hotels['city_name'].astype('string') # 更改列的类型 print(df_hotels.loc[df_hotels['city_name'].apply(lambda x: x.startswith(' '))]) # 打印 city_name 以 ' ' 开头的地方 df_hotels['city_name'] = df_hotels['city_name'].apply(lambda x: x.strip()) # 去掉'' print(df_hotels.loc[df_hotels['city_name'].apply(lambda x: x.startswith(' '))] ) # 打印 city_name 以 ' ' 开头的地方
  • 完美运行!非常感谢@Guyblublu!
猜你喜欢
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多