【发布时间】:2020-01-29 02:20:40
【问题描述】:
我的数据集如下所示:
ex = pd.DataFrame.from_dict({'grp1': np.random.choice('A B'.split(), 20), 'grp2': np.random.choice([1, 2], 20), 'var1': np.random.rand(20), 'var2': np.random.randint(20)})
我想在组中创建具有下一个值的新列,但以下代码导致SettingWithCopyWarning:
ex[['next_var1', 'next_var2']] = ex.groupby(['grp1', 'grp2'])[['var1', 'var2']].shift(-1)
因此我尝试使用.loc:
ex.loc[:, ['next_var1', 'next_var2']] = ex.groupby(['grp1', 'grp2'])[['var1', 'var2']].shift(-1)
但是,它会导致错误:
KeyError:“[列] 中没有 [Index(['next_var1', 'next_var2'], dtype='object')]”
.loc 的用法有什么问题?
【问题讨论】:
-
我在 Python 3.7.5 中没有收到
ex[['next_var1', 'next_var2']] = ex.groupby(['grp1', 'grp2'])[['var1', 'var2']].shift(-1)的警告
标签: pandas