Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在给定条件下,如何用其他行的值填充DataFrame的数据?_Python_Pandas - Fatal编程技术网

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