Python 熊猫:如何动态填充?
我有一个包含很多NaN值的数据集,我想根据其他列的值填充它。这里有一个例子Python 熊猫:如何动态填充?,python,pandas,Python,Pandas,我有一个包含很多NaN值的数据集,我想根据其他列的值填充它。这里有一个例子 Ind Init Desc 1 A Apple 2 A Apple 3 A NaN 4 B NaN 5 B Banana 6 B Banana 7 C Cherry 8 C NaN 9 C Cherry 10 D NaN 11 D NaN 12 D NaN
Ind Init Desc
1 A Apple
2 A Apple
3 A NaN
4 B NaN
5 B Banana
6 B Banana
7 C Cherry
8 C NaN
9 C Cherry
10 D NaN
11 D NaN
12 D NaN
13 A NaN
14 A NaN
15 A Apple
我不能简单地使用df.fillna('apple'),因为它必须是动态的。我也不能使用(method='ffill')
和(method='bfill')
,因为在A的情况下,它应该是ffill
,在B的情况下,它应该是bfill
。同样在D的情况下,它应该说“没有可用的水果描述!”
您可以假设没有丢失的Init,并且每个唯一的Init只有一个水果描述
处理这种情况的最佳方法是什么?您可以使用以下方法:
df['Desc1']=(df.groupby('Init')['Desc'].apply
(lambda x: x.ffill().bfill()).fillna('No fruit description available!'))
print(df)
Ind Init Desc Desc1
0 1 A Apple Apple
1 2 A Apple Apple
2 3 A NaN Apple
3 4 B NaN Banana
4 5 B Banana Banana
5 6 B Banana Banana
6 7 C Cherry Cherry
7 8 C NaN Cherry
8 9 C Cherry Cherry
9 10 D NaN No fruit description available!
10 11 D NaN No fruit description available!
11 12 D NaN No fruit description available!
12 13 A NaN Apple
13 14 A NaN Apple
14 15 A Apple Apple
像这样的
mapping_dict = {'A': 'Apple', 'B': 'Banana', 'C':'Cherry', 'D':'no fruit description available'}
df['Desc'] = df['Init'].map(mapping_dict)
你有一个
Init=C
,也是NaN,但没有规则。@NicholasHuh很高兴。。!!把这个问题投给了一个问得很好的问题!!