在清理pandas dataframe中的空值时处理错位的数据

gab6jxml  于 2023-04-28  发布在  其他
关注(0)|答案(1)|浏览(150)

我正在做一个项目,我需要从PDF表格中提取数据并将其转换为pandas dataframe。原来的table看起来是这样的。

C100    C200    C300
    30      0       92
    22      0       6
    46      0       2

然而,我遇到了一个问题,输出结果不是我所期望的。具体而言,在所得到的 Dataframe 中,C200列具有放错位置的值

0       1       2     3
0   C100    C200          C300
1   30              0     92
2   22              0     6
3   46              0     2

我的尝试是先将空值转换为NaN,然后删除它们,但问题是我最终用不符合原始表的错误值替换它们:

df.replace(r'^\s*$', np.nan, regex=True)

    0       1       2     3
0   C100    C200    NaN   C300
1   30      NaN     0     92
2   22      NaN     0     6
3   46      NaN     0     2

df.ffill(axis=1)

    0       1       2     3
0   C100    C200    C200  C300
1   30      30      0     92
2   22      22      0     6
3   46      46      0     2

我想知道是否有人可以建议一种方法,用表中的原始值替换这些NaN值?
多谢了

r1zhe5dt

r1zhe5dt1#

我认为一般的解决方案是有问题的,这里有必要用途:

df.iloc[0, 2] = df.iloc[0, 1]

df = df.drop([1], axis=1)

df = df.iloc[1:].set_axis(df.iloc[0].tolist(), axis=1)
print (df)
  C100 C200 C300
1   30  0.0   92
2   22  0.0    6
3   46  0.0    2

相关问题