我有一些数据框正在尝试上传到数据库。它们是值列表,但某些列中包含字符串“null”,因此这会导致错误。
所以我想使用一个函数来删除这些“空”字符串,并尝试使用替换来回填它们:
df.replace("null", method = bfill)
但它给了我错误消息:
ParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 2
我也尝试过用“bfill”代替,它只是用字符串“bfill”替换了“null”。
感谢任何帮助。
谢谢。
抱歉,应该提供一个示例:
1 6 11
2 7 12
null null null
4 9 14
5 10 15
最佳答案
我认为你需要replace
将 null
字符串转换为 NaN
,然后调用 bfill
(fillna
with method='bfill'
),如果数据末尾的一些 NaN
添加 ffill
进行前向填充:
df = df.replace("null",np.nan).bfill().ffill()
但是你的错误显然是在 read_csv
中函数,检查第 4 行 - 解析器只需要一个值,由于某种原因有 2 个值。
示例:
df = pd.DataFrame({'A':['k','null','n','null','null','m'],
'B':['t','null','null','f','null','s'],
'C':['r','t','null','s','null','null']})
print (df)
A B C
0 k t r
1 null null t
2 n null null
3 null f s
4 null null null
5 m s null
print (df.replace("null",np.nan))
A B C
0 k t r
1 NaN NaN t
2 n NaN NaN
3 NaN f s
4 NaN NaN NaN
5 m s NaN
df1 = df.replace("null",np.nan).bfill()
print (df1)
A B C
0 k t r
1 n f t
2 n f s
3 m f s
4 m s NaN
5 m s NaN
#if some `NaN`s in last row is necessary `ffill`
df2 = df.replace("null",np.nan).bfill().ffill()
print (df2)
A B C
0 k t r
1 n f t
2 n f s
3 m f s
4 m s s
5 m s s
关于python - 用之前的数字替换 Pandas 数据框中的未知数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45649492/