我有数据集 - > data.txt中:
4 x x1, x2, x3, x4, x5, x6, x7, x8
6 y y1, y2, y3, y4, y5, y6, y7
9 z z1, z2
这是导入此数据的代码:
df = pd.read_csv('data/xyz.txt', sep=',', names=range(20), delim_whitespace=True)
df.dropna(axis=1, how='all', inplace=True)
看起来不错,但是有逗号'。
的问题df.head()
0 1 2 3 4 5 6 7 8 9
0 4 x x1, x2, x3, x4, x5, x6, x7, x8
1 6 y y1, y2, y3, y4, y5, y6, y7 NaN
2 9 z z1, z2 NaN NaN NaN NaN NaN NaN
我的目标是从所有值中删除所有逗号。 我不能手动这是大数据。 我不想通过对每个值进行嵌套循环来实现它。
答案 0 :(得分:1)
这是一个hacky修复:对有问题的列进行子集化,然后使用.apply
并应用pd.Series
方法.str.replace
:
In [17]: df
Out[17]:
0 1 2 3 4 5 6 7 8 9
0 4 x x1, x2, x3, x4, x5, x6, x7, x8
1 6 y y1, y2, y3, y4, y5, y6, y7 NaN
2 9 z z1, z2 NaN NaN NaN NaN NaN NaN
In [18]: df.loc[:,range(2, 10)].apply(lambda S: S.str.replace(',',''))
Out[18]:
2 3 4 5 6 7 8 9
0 x1 x2 x3 x4 x5 x6 x7 x8
1 y1 y2 y3 y4 y5 y6 y7 NaN
2 z1 z2 NaN NaN NaN NaN NaN NaN
所以,只需使用基于loc
的作业执行此操作:
In [19]: df.loc[:, range(2, 10)] = df.loc[:,range(2, 10)].apply(lambda S: S.str.replace(',',''))
In [20]: df
Out[20]:
0 1 2 3 4 5 6 7 8 9
0 4 x x1 x2 x3 x4 x5 x6 x7 x8
1 6 y y1 y2 y3 y4 y5 y6 y7 NaN
2 9 z z1 z2 NaN NaN NaN NaN NaN NaN
答案 1 :(得分:0)
使用replace
表单数据框
df.replace({',':''},regex=True)
Out[1280]:
0 1 2 3 4 5 6 7 8 9
0 4 x x1 x2 x3 x4 x5 x6 x7 x8
1 6 y y1 y2 y3 y4 y5 y6 y7 NaN
2 9 z z1 z2 NaN NaN NaN NaN NaN NaN