为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Pandas 更新 CSV 文件中的 Nan 值,并在 CSV 的其他列上使用

使用 Pandas 更新 CSV 文件中的 Nan 值,并在 CSV 的其他列上使用

Go
犯罪嫌疑人X 2022-11-09 14:52:17
我想根据人的类别更新年龄列中的 Nan 值。csv 文件包含年龄和人的类别。如果这个人是一等的,他的年龄是 35。如果这个人是二等的,他的年龄是 30。如果这个人是三等的,他的年龄是 25。Csv FileAge   Class32     226     3Nan    136     124     3Nan    2Nan    3Update Csv FileAge   Class32     226     335     136     124     330     225     3我尝试了一些熊猫功能,但没有奏效。df[ (df.Age.isnull()) & (df.Pclass==1) ]['Age'] = 35df[ (df.Age.isnull()) & (df.Pclass==2) ]['Age'] = 30df[ (df.Age.isnull()) & (df.Pclass==3) ]['Age'] = 25请提供解决方案....
查看完整描述

4 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以使用map:


age_dict={1:35, 2:30, 3:25}


# read csv

df = pd.read_csv('in_file.csv')


# update the missing ages

df['Age'] = df['Age'].fillna(df['Class'].map(age_dict))


# save csv

df.to_csv('out_file.csv')


查看完整回答
反对 回复 2022-11-09
?
慕神8447489

TA贡献1780条经验 获得超1个赞

享受:


df['Age'] = np.where((df.Age.isnull() == True) & (df.Pclass==1), 35, df['Age])

df['Age'] = np.where((df.Age.isnull() == True) & (df.Pclass==2), 30, df['Age])

df['Age'] = np.where((df.Age.isnull() == True) & (df.Pclass==3), 25, df['Age])


查看完整回答
反对 回复 2022-11-09
?
LEATH

TA贡献1936条经验 获得超6个赞

我想这样的事情应该有效,



df['Age'][ df['Age'].isnull() & df['lass'] == 1] = 35

df['Age'][ df['Age'].isnull() & df['lass'] == 2] = 30

df['Age'][ df['Age'].isnull() & df['lass'] == 3] = 25


查看完整回答
反对 回复 2022-11-09
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

在导入pandas之前先将csv文件转换成如下图:


Age,Class

32,2

26,3

,1

36,1

24,3

,2

,3

现在导入 csv 文件并将值分配给 Nan。


import pandas as pd

df = pd.read_csv(YOUR_CSV_FILE)

df.loc[ (df.Age.isna()) & (df.Class==1) ] = 35,1

df.loc[ (df.Age.isna()) & (df.Class==2) ] = 30,1

df.loc[ (df.Age.isna()) & (df.Class==3) ] = 25,1


查看完整回答
反对 回复 2022-11-09
  • 4 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信