gpt4 book ai didi

python - 填写 Pandas 数据框中的缺失值

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:41 26 4
gpt4 key购买 nike

Python 的新手,似乎无法找到我正在寻找的确切答案我相信有更简单的方法来填写此信息

我有 df1 和 df2

df1: FirstName  LastName  PhNo  uniqueid

df2: uniqueid PhNo

我想用 df2 中基于匹配的 uniqueid == uniqueid 的匹配值来填充 df1['PhNo'] 中缺失的值

我使用的代码如下

dff = pd.merge(df1,df2,on = 'uniqueid', how = 'Left')
dff['PhNo'] = 0
dff['PhNo'][df1['PhNo_x'] >= 1] = df1['PhNo_x']
df1['PhNo'][df2['PhNo_y'] >= 1] = df1['PhNo_y']

这似乎可以完成工作,但似乎不是一种有效的方法。我正在寻找比合并更少的行数和更好的技术

df1

FirstName  LastName  PhNo    uniqueid
Sam R 123x 1
John S 345x 2
Paul K np.Nan 3
Laney P no.NaN 4

df2

uniqueid  PhNo
1 213x
3 675x
4 987x

期望的输出:df1

FirstName  LastName  PhNo    uniqueid
Sam R 123x 1
John S 345x 2
Paul K **675x** 3
Laney P **987x** 4

最佳答案

我相信你需要Series.mapSeries.fillna :

df1 = pd.DataFrame({
'FirstName':list('abcdef'),
'LastName':list('aaabbb'),
'PhNo':[7,np.nan,9,4,np.nan,np.nan],
'uniqueid':[5,3,6,9,2,4],

})

print (df1)
FirstName LastName PhNo uniqueid
0 a a 7.0 5
1 b a NaN 3
2 c a 9.0 6
3 d b 4.0 9
4 e b NaN 2
5 f b NaN 4

df2 = pd.DataFrame({
'PhNo':[10,90,30,20],
'uniqueid':[3,6,9,4],

})
print (df2)
PhNo uniqueid
0 10 3
1 90 6
2 30 9
3 20 4

s = df2.set_index('uniqueid')['PhNo']
df1['PhNo'] = df1['PhNo'].fillna(df1['uniqueid'].map(s))
print (df1)
FirstName LastName PhNo uniqueid
0 a a 7.0 5
1 b a 10.0 3
2 c a 9.0 6
3 d b 4.0 9
4 e b NaN 2
5 f b 20.0 4

关于python - 填写 Pandas 数据框中的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55090307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com