Python 插入来自同一数据帧的另一个片段的数据帧片段
我有一个Python 插入来自同一数据帧的另一个片段的数据帧片段,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个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
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
我想用组2
中列val\u 1
中的值填充属于组1
的NaN
值。我尝试使用:
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
添加
.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
那么组的长度是相等的?每次“南”将等于一个组的长度?是的,它们将始终具有相同的长度!那么组的长度是相等的?每次“南”将等于一个组的长度?是的,它们将始终具有相同的长度!