熊猫 - 剥离白色空间

时间:2017-04-10 20:04:16

标签: python csv pandas

我正在使用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_id s的一个例子:

37 78973 3
23787
2 22 3
123

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

4 个答案:

答案 0 :(得分:17)

您可以使用.str.strip() {/ 1>}在Pandas中strip()整个系列

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

这将删除employee_iddf1

df2列上的前导/尾随空格

或者,您可以修改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(" ","")

答案 1 :(得分:6)

您可以在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})

答案 2 :(得分:2)

Df['employee']=Df['employee'].str.strip()

答案 3 :(得分:0)

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

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

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

就这样