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列都df1与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)
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)
你可以做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)
| 归档时间: |
|
| 查看次数: |
44148 次 |
| 最近记录: |