Pandas - 去除空白

Posted

技术标签:

【中文标题】Pandas - 去除空白【英文标题】:Pandas - Strip white space 【发布时间】:2017-09-06 00:31:39 【问题描述】:

我正在使用 python csvkit 来比较 2 个这样的文件:

df1 = pd.read_csv('input1.csv', sep=',\s+', delimiter=',', encoding="utf-8")
df2 = pd.read_csv('input2.csv', sep=',\s,', delimiter=',', encoding="utf-8")
df3 = pd.merge(df1,df2, on='employee_id', how='right')
df3.to_csv('output.csv', encoding='utf-8', index=False)

目前我正在通过一个脚本运行该文件,该脚本会从employee_id 列中删除空格。

employee_ids 的一个例子:

37 78973 3
23787
2 22 3
123

有没有办法让csvkit 做到这一点并为我节省一步?

【问题讨论】:

df1.employee_id = df1.employee_id.str.strip() skipinitialspace=True 中的read_csv 怎么样? 【参考方案1】:

在 pandas 数据框中删除空白的最佳和最简单的方法是:-

df1 = pd.read_csv('input1.csv')

df1["employee_id"]  = df1["employee_id"].str.strip()

就是这样

【讨论】:

【参考方案2】:

您可以将strip() 中的pandas.read_csv() 设为:

pandas.read_csv(..., converters='employee_id': str.strip)

如果你只需要去掉前导空格:

pandas.read_csv(..., converters='employee_id': str.lstrip)

并删除所有空格:

def strip_spaces(a_str_with_spaces):
    return a_str_with_spaces.replace(' ', '')

pandas.read_csv(..., converters='employee_id': strip_spaces)

【讨论】:

【参考方案3】:

您可以使用.str.strip()strip() 在 Pandas 中使用整个系列:

df1['employee_id'] = df1['employee_id'].str.strip()
df2['employee_id'] = df2['employee_id'].str.strip()

这将删除employee_id 列中df1df2 中的前导/尾随空格

或者,您可以修改您的 read_csv 行以也使用 skipinitialspace=True

df1 = pd.read_csv('input1.csv', sep=',\s+', delimiter=',', encoding="utf-8", skipinitialspace=True)
df2 = pd.read_csv('input2.csv', sep=',\s,', delimiter=',', encoding="utf-8", skipinitialspace=True)

您似乎正试图删除包含数字的字符串中的空格。你可以这样做:

df1['employee_id'] = df1['employee_id'].str.replace(" ","")
df2['employee_id'] = df2['employee_id'].str.replace(" ","")

【讨论】:

如果空格不是尾随或前导,这种方法是否仍然有效?即'23 4883 2'? 没有。 strip() 仅适用于前导和尾随空格。 我可以改用正则表达式或类似的吗? @fightstarr20,查看我的最新编辑。这将空格替换为空。这是否实现了您正在寻找的东西?您的列仍将是一个字符串,但您可以在删除空格后使用astype(int) 解决该问题。 那太好了,谢谢你的例子,我相信 split() 解决方案在某些时候也会派上用场【参考方案4】:
Df['employee']=Df['employee'].str.strip()

【讨论】:

以上是关于Pandas - 去除空白的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript去除空白节点和忽略空白节点

#word# word2013去除脚注的空白行

[Matlab]去除绘图周围空白边界

去除字符串的空白

请教Excel如何去除下拉菜单空白区域的问题,空白区域有公式。

mysql 去除特殊字符和前后空白字符