如何在Pandas中将非对齐列的值追加到现有列?
解决Pandas中把DataFrame的C列值填充到A列对应空值位置的问题
你的问题出在误用了append()方法——append()是用来将另一个Series/DF追加到当前Series末尾生成新的长Series,但当你把这个长Series赋值回原DF的a列时,原DF只有5行,只会匹配索引0-4的内容,所以根本没修改到目标位置。
正确的解决方法
你需要做的是将A列的空值位置用C列对应位置的值填充,而不是追加,有两种简单的实现方式:
方法1:使用fillna()直接填充
fillna()可以指定用另一列的值填充当前列的空值,代码如下:
import pandas as pd d = {'a':[1,2,3,None, None], 'b':[7,8,9, None, None], 'c':[None, None, None, 5, 6]} df = pd.DataFrame(d) df['a'] = df['a'].fillna(df['c']) print(df)
方法2:通过索引定位赋值
先筛选出A列为空的行,再把C列对应的值赋过去:
import pandas as pd d = {'a':[1,2,3,None, None], 'b':[7,8,9, None, None], 'c':[None, None, None, 5, 6]} df = pd.DataFrame(d) # 定位a列为空的行,将c列对应的值赋值给a列 df.loc[df['a'].isna(), 'a'] = df['c'] print(df)
运行结果
两种方法都会得到你期望的输出:
a b c 0 1.0 7.0 NaN 1 2.0 8.0 NaN 2 3.0 9.0 NaN 3 5.0 NaN 5.0 4 6.0 NaN 6.0
内容的提问来源于stack exchange,提问作者Trippingbillies41
相关产品推荐
相关产品推荐

