我想计算 pandas 数据框,但某些行包含缺失值。对于那些缺失的值,我想使用不同的算法。可以说:
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) 我正在处理一个包含 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 是从右到左向后计算的。老实说,我没有找到解决方案 - 有什么建议吗?我究竟做错了什么?