小编Jon*_*nas的帖子

Pandas:替换丢失的数据帧值/条件计算:fillna

我想计算 pandas 数据框,但某些行包含缺失值。对于那些缺失的值,我想使用不同的算法。可以说:

  • 如果 B 列包含值,则从 B 中减去 A
  • 如果 B 列不包含值,则从 C 中减去 A
import pandas as pd
df = pd.DataFrame({'a':[1,2,3,4], 'b':[1,1,None,1],'c':[2,2,2,2]})
df['calc'] = df['b']-df['a']
Run Code Online (Sandbox Code Playgroud)

结果是:

print(df)
   a    b  c  calc
0  1  1.0  2   0.0
1  2  1.0  2  -1.0
2  3  NaN  2   NaN
3  4  1.0  2  -3.0
Run Code Online (Sandbox Code Playgroud)

方法 1:使用以下方法填充 NaN 行.where

df['calc'].where(df['b'].isnull()) = df['c']-df['a']
Run Code Online (Sandbox Code Playgroud)

这会导致SyntaxError:无法分配给函数调用

方法 2:使用以下方法填充 NaN 行.iterrows()

for index, row in df.iterrows():
    i …
Run Code Online (Sandbox Code Playgroud)

python nan dataframe pandas

3
推荐指数
1
解决办法
3407
查看次数

将值从一个表复制到具有相同 ID 的另一个表

我正在处理一个包含 1000 多行的表,其中两列中的数据已损坏 ( table_corrupted)。幸运的是,我有该表的过时备份,其中这两列完好无损(table_outdated)。所以我想:为什么不只替换这两列中的值并保留其余部分不变?

假设table_corrupted两者table_outdated都有 5 列:

id(整数)、name(文本)、lat(双)、lon(双)、comment(文本)

insert into `table_corrupted` (`lat`,`lon`) 
select `lat`,`lon` from `table_outdated`
WHERE `table_corrupted`.`id` = `table_outdated`.`id`;
Run Code Online (Sandbox Code Playgroud)

...导致此错误:“Where 子句中的未知列 'table_corrupted.id'”

经过一些研究,我发现这是因为 SQL 是从右到左向后计算的。老实说,我没有找到解决方案 - 有什么建议吗?我究竟做错了什么?

mysql

1
推荐指数
1
解决办法
4256
查看次数

标签 统计

dataframe ×1

mysql ×1

nan ×1

pandas ×1

python ×1