python - 用之前的数字替换 Pandas 数据框中的未知数字

标签 python python-3.x pandas dataframe

我有一些数据框正在尝试上传到数据库。它们是值列表,但某些列中包含字符串“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

最佳答案

我认为你需要replacenull 字符串转换为 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/

相关文章:

python - 如何在 unstack 过程中使用自定义列名称并更改结构?

python - 编写全局配置文件的正确方法是什么?

python - 确保 groupby 输出类型

python - Dataframe 处理缺失的时间序列数据

python - Python 中的分位数函数

python - 迭代相同长度的行文件的每个字符串的索引,同时从各个索引创建每个值的新字符串

python - TypeError : Improper input: N=3 must not exceed M=1, 不确定我的尺寸有什么问题?

python - Pygame Sprite 运动故障

python - 在 Pandas 中的 groupby 对象上引导

python - 如何在python中读取从shell脚本导出的变量