我有以下数据框:
df_test = pd.DataFrame({"f":['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'],
"d":['x', 'x', 'y', 'y', 'x', 'x', 'y', 'y'],
"low": [0,5,2,4,5,10,4,8],
"up": [5,10,4,6,10,15,8,12],
"z": [1,3,6,2,3,7,5,10]})
我首先要做的是将“low”、“up”和“z”列转换为列出每个(分组依据)“f”和“d”。所以这就是我所做的:
dff = df_test.groupby(['f','d'])[['low', 'up', 'z']].agg(list).reset_index()
现在我想从“up”列的列表中提取最后一个值,并将其添加到“low”列的列表中。 但不幸的是,这不起作用:
dff['last'] = (dff['up'].apply(lambda x: x[-1])).tolist()
dff['new'] = dff['low'].append(dff['last'])
我收到一条错误消息“ValueError:无法从重复轴重新索引”。 "new"列应具有以下值: [0,5,10], [2,4,6], [5,10,15], [4,8,12]
非常感谢任何帮助!
最佳答案
另一种可能的解决方案:
dff['new'] = dff['low'] + pd.Series([[x[1]] for x in dff['up']])
输出:
f d low up z new
0 a x [0, 5] [5, 10] [1, 3] [0, 5, 10]
1 a y [2, 4] [4, 6] [6, 2] [2, 4, 6]
2 b x [5, 10] [10, 15] [3, 7] [5, 10, 15]
3 b y [4, 8] [8, 12] [5, 10] [4, 8, 12]
关于python - 将 A 列列表中的最后一个值添加到 b 列列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74174413/