熊猫 - 剥离白色空间

fig*_*r20 10 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)
Run Code Online (Sandbox Code Playgroud)

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

employee_ids的一个例子:

37 78973 3
23787
2 22 3
123
Run Code Online (Sandbox Code Playgroud)

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

And*_*ndy 28

你可以strip()使用.str.strip()完成 Pandas中的整个系列:

df1['employee_id'] = df1['employee_id'].str.strip()
df2['employee_id'] = df2['employee_id'].str.strip()
Run Code Online (Sandbox Code Playgroud)

这将删除前/后空格的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)
Run Code Online (Sandbox Code Playgroud)

看起来您正在尝试删除包含数字的字符串中的空格.你可以这样做:

df1['employee_id'] = df1['employee_id'].str.replace(" ","")
df2['employee_id'] = df2['employee_id'].str.replace(" ","")
Run Code Online (Sandbox Code Playgroud)


Ste*_*uch 7

你可以做strip()pandas.read_csv()是:

pandas.read_csv(..., converters={'employee_id': str.strip})
Run Code Online (Sandbox Code Playgroud)

如果你只需要删除前导空格:

pandas.read_csv(..., converters={'employee_id': str.lstrip})
Run Code Online (Sandbox Code Playgroud)

并删除所有空格:

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

pandas.read_csv(..., converters={'employee_id': strip_spaces})
Run Code Online (Sandbox Code Playgroud)


Vip*_*pin 6

Df['employee']=Df['employee'].str.strip()
Run Code Online (Sandbox Code Playgroud)