熊猫不会去除分离器

时间:2018-02-21 18:27:56

标签: python pandas dataframe

我有数据集 - > 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

我的目标是从所有值中删除所有逗号。 我不能手动这是大数据。 我不想通过对每个值进行嵌套循环来实现它。

2 个答案:

答案 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