pandas fillna取决于另一个专栏

时间:2018-03-29 03:27:21

标签: python pandas

我有以下pandas dataframe

A    B
a    15
a    15
a    NaN
b    19
b    NaN

如果A列vlaue为'a',我想用B填充B列,如果A列vlaue为'b',则列B为19,结果在数据帧之后:

A    B
a    15
a    15
a    15
b    19
b    19

感谢。

2 个答案:

答案 0 :(得分:1)

如果您的数据框已排序,则可以使用ffill

df.ffill()

输出:

或者如果它没有排序,您可以使用sort_valuesffill

df.sort_values(['A','B']).ffill()

输出:

   A     B
0  a  15.0
1  a  15.0
2  a  15.0
3  b  19.0
4  b  19.0

答案 1 :(得分:0)

df.loc[(df['A']=='a') & df['B'].isnull(), 'B'] = 15
df.loc[(df['A']=='b') & df['B'].isnull(), 'B'] = 19

也许df['B'].isnull()条款不是必要的 - 如果所有条款都是'和' b'无论如何,B列中的行必须是15或19。