我想将某个领域的英勇换成另一个。例如:假设我有一个标识符为df的pandas.DataFrame对象(是的,非常原始),它有几列,但其中有些列是相关的,不能为空。
我注意到一些值设置在另一个字段中。假设field1是一个相关字段,而field2不是。我有一千个寄存器,当我获得新数据时,它每周都在增加,并且由于我喜欢使事情自动化,所以我首先检查以下可能的值:
idx = df[df.field1.isna() & df.field2.notna()].index
然后我尝试替换它们:
df.loc[idx, ['field1']] = df.loc[idx, ['field2']]
但是当我看到结果时,什么都没有改变……为什么?我以这种方式用单个值代替,但是如果它们不同,我将无法再进行替换。
df.loc[idx, ['field1']] = "Not empty any longer" # This will work
我无法弄清楚如何以一种……好的方式实现这一目标?我的意思是,我不想手动检查它,如果它们只有50岁也没关系,我必须对其他领域也做同样的事情,我可能会得到更多这样的信息(而且我会这样做)。
谢谢!
尝试这个: df.loc[idx, ['field1']] = df.loc[idx, ['field2']].values
例:
# The None in 'field1' should be replaced by the 'field2' value
df = pd.DataFrame({'field1':[1,2,3,None,5], 'field2':[6,7,8,8,None]})
idx = df[df.field1.isna() & df.field2.notna()].index
df.loc[idx, ['field1']] = df.loc[idx, ['field2']].values
原始数据框:
df
field1 field2
0 1.0 6.0
1 2.0 7.0
2 3.0 8.0
3 NaN 8.0
4 5.0 NaN
修改后的df:
df
field1 field2
0 1.0 6.0
1 2.0 7.0
2 3.0 8.0
3 8.0 8.0
4 5.0 NaN
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句