Python 熊猫:如何动态填充?

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

我有一个包含很多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很高兴。。!!把这个问题投给了一个问得很好的问题!!