我有一个像这样的pandas.DataFrame
:
df = pd.DataFrame({'val_1': [np.nan, np.nan, np.nan, 2.34, 2.21, 2.45],
'val_2': [3.1, 3.02, 3.67, np.nan , np.nan, np.nan],
'group': [1, 1, 1, 2, 2, 2]})
df
val_1 val_2 group
0 NaN 3.10 1
1 NaN 3.02 1
2 NaN 3.67 1
3 2.34 NaN 2
4 2.21 NaN 2
5 2.45 NaN 2
我想使用 val_1< 列中的值填充
来自组 val_1
列中属于组 1
的 NaN
值2
。我尝试使用:
df.loc[df['group']==1, 'val_1'] = df.loc[df['group']==2, 'val_1']
我预计结果如下:
val_1 val_2 group
0 2.34 3.10 1
1 2.21 3.02 1
2 2.45 3.67 1
3 2.34 NaN 2
4 2.21 NaN 2
5 2.45 NaN 2
但我得到的是这个:
val_1 val_2 group
0 NaN 3.10 1
1 NaN 3.02 1
2 NaN 3.67 1
3 2.34 NaN 2
4 2.21 NaN 2
5 2.45 NaN 2
我怎样才能正确执行该操作? 该解决方案需要可扩展到更大的数据框。 预先感谢您!
最佳答案
修复您的代码,添加 .values
df.loc[df['group']==1, 'val_1'] = df.loc[df['group']==2, 'val_1'].values
df
Out[300]:
val_1 val_2 group
0 2.34 3.10 1
1 2.21 3.02 1
2 2.45 3.67 1
3 2.34 NaN 2
4 2.21 NaN 2
5 2.45 NaN 2
关于python - 将同一数据帧中的另一个切片插入到 pandas 数据帧切片中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56601019/