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

我想根据人的类别更新年龄列中的 Nan 值。csv 文件包含年龄和人的类别。

如果这个人是一等的,他的年龄是 35。

如果这个人是二等的,他的年龄是 30。

如果这个人是三等的,他的年龄是 25。


Csv File

Age   Class

32     2

26     3

Nan    1

36     1

24     3

Nan    2

Nan    3



Update Csv File

Age   Class

32     2

26     3

35     1

36     1

24     3

30     2

25     3

我尝试了一些熊猫功能,但没有奏效。


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

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

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

请提供解决方案....


犯罪嫌疑人X
浏览 138回答 4
4回答

Cats萌萌

您可以使用map:age_dict={1:35, 2:30, 3:25}# read csvdf = pd.read_csv('in_file.csv')# update the missing agesdf['Age'] = df['Age'].fillna(df['Class'].map(age_dict))# save csvdf.to_csv('out_file.csv')

慕神8447489

享受: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])

LEATH

我想这样的事情应该有效,df['Age'][ df['Age'].isnull() & df['lass'] == 1] = 35df['Age'][ df['Age'].isnull() & df['lass'] == 2] = 30df['Age'][ df['Age'].isnull() & df['lass'] == 3] = 25

慕的地8271018

在导入pandas之前先将csv文件转换成如下图:Age,Class32,226,3,136,124,3,2,3现在导入 csv 文件并将值分配给 Nan。import pandas as pddf = pd.read_csv(YOUR_CSV_FILE)df.loc[ (df.Age.isna()) & (df.Class==1) ] = 35,1df.loc[ (df.Age.isna()) & (df.Class==2) ] = 30,1df.loc[ (df.Age.isna()) & (df.Class==3) ] = 25,1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go