0
我最近开始与熊猫一起工作,并且试图对数据进行一些简单的清理。到目前为止,我已经了解到使用熊猫时有很多单线程。所以我正在寻找一个在我的情况。我有DataFrame
这样的:熊猫 - 使用其他列的值替换NaN值
C0 C1 C2 C3 C4
3789507 2010 NaN NaN NaN
3789508 NaN NaN 2010 NaN
3789509 NaN NaN 2016 NaN
3789510 NaN 2014 NaN NaN
3789511 NaN NaN NaN 2014
我想这样的事情结束了:
C0 C1
3789507 2010
3789508 2010
3789509 2016
3789510 2014
3789511 2014
我现在这样简单地说就是:
k = df.C1.isnull()
df.C1[k] = df.C2[k]
k = df.C1.isnull()
df.C1[k] = df.C3[k]
k = df.C1.isnull()
df.C1[k] = df.C4[k]
这是工作,但并不是最好的解决方案。如果我将列100列?循环这里唯一的解决方案?
万一我的for循环看起来像这样:
for i in range(2,len(df.columns)):
k = df.C1.isnull()
df.C1[k] = df.ix[:,i]
只有一个问题 - 如果它不是一个大麻烦,你能解释它是如何工作的吗?我应该从后面读吗?我的意思是这个真实的案例与选定的列。 – sebap123
好的,看看'C4'有一个值的行,但其他列都丢失了。 'df.bfill(axis ='columns')'创建一个新的数据帧,该行中'C4'左边的每个缺失值从'C4'得到值。 “C4”中的有效值被“回填”到所有缺失的列中。然后,我们只需将回填的C1列复制到原始数据框中即可。 – Marius
非常感谢 - 现在我明白了。 – sebap123