根据另一列中的值填充一列-Pandas

时间:2020-08-06 16:44:59

标签: python pandas dataframe

合并两个数据框后,我的数据框中存在一些空白,可以根据相邻的列进行填充(我有更多的列和DF中的行,但我专注于这三列): DF示例:

唯一ID |类型位置

A         1       Land
A         NaN     NaN       
B         2       sub
B         NaN     NaN      
C         3       Land
C         3       Land

最终,我希望填写三列:

唯一ID |类型位置

A         1       Land
A         1       Land     
B         2       sub
B         2       sub    
C         3       Land
C         3       Land

我尝试过:

df.loc[df.Type.isnull(), 'Type'] = df.loc[df.Type.isnull(), 'Unique ID'].map(df.loc[df.Type.notnull()].set_index('Unique ID')['Type'])

但是它抛出: InvalidIndexError:重新索引仅对具有唯一值的Index对象有效

我在这里想念什么? -谢谢

2 个答案:

答案 0 :(得分:0)

最好的解决方案是大概摆脱NaN行而不是覆盖它们。熊猫对此有一个简单的命令:

df.dropna()

这里是文档:pandas.DataFrame.dropna

答案 1 :(得分:0)

您的示例表明您要向前填充。您可以这样执行(完整代码):

import pandas as pd
from io import StringIO

clientdata = '''ID        N       T
A         1       Land
A         NaN     NaN       
B         2       sub
B         NaN     NaN      
C         3       Land
C         3       Land'''

df = pd.read_csv(StringIO(clientdata), sep='\s+')

df["N"] = df["N"].fillna(method="ffill")
df["T"] = df["T"].fillna(method="ffill")
print(df)