Python 在给定条件下,如何用其他行的值填充DataFrame的数据?
我想用其他行的值填充某些行的值 让我举一个例子:Python 在给定条件下,如何用其他行的值填充DataFrame的数据?,python,pandas,Python,Pandas,我想用其他行的值填充某些行的值 让我举一个例子: In [7]: df = pd.DataFrame([['a', 'b', 'c', 'aa', 'ba'], [1,2,3,np.nan,np.nan]]).T In [8]: df Out[8]: 0 1 0 a 1 1 b 2 2 c 3 3 aa NaN 4 bb NaN 我想要的是用df.loc[0,1]的值填充df.loc[3,1] df.loc[4,1]和df.loc[1,1
In [7]: df = pd.DataFrame([['a', 'b', 'c', 'aa', 'ba'], [1,2,3,np.nan,np.nan]]).T
In [8]: df
Out[8]:
0 1
0 a 1
1 b 2
2 c 3
3 aa NaN
4 bb NaN
我想要的是用df.loc[0,1]的值填充df.loc[3,1]
df.loc[4,1]和df.loc[1,1]
因为给定条件“a”和“aa”loc[3,1]和loc[0,1]具有相同的
第一个“a”、“b”和“bb”共享“b”
有什么好方法可以做到这一点吗?如果可能的话,将第一个字母的值与正向填充结合使用:
df[1] = df.groupby(df[0].str[0])[1].ffill()
print (df)
0 1
0 a 1
1 b 2
2 c 3
3 aa 1
4 ba 2
如果需要替换为第一个非缺失值,请使用:
如有可能,将值按首字母与正向填充组合使用:
df[1] = df.groupby(df[0].str[0])[1].ffill()
print (df)
0 1
0 a 1
1 b 2
2 c 3
3 aa 1
4 ba 2
如果需要替换为第一个非缺失值,请使用:
使用map,我只能想到这一点:
map_val = df.dropna().set_index(0).to_dict()[1]
df[1] = df[1].fillna(df[0].map(lambda x:map_val[x[0]]))
df
使用map,我只能想到这一点:
map_val = df.dropna().set_index(0).to_dict()[1]
df[1] = df[1].fillna(df[0].map(lambda x:map_val[x[0]]))
df