python - 将 A 列列表中的最后一个值添加到 b 列列表中

标签 python pandas dataframe group-by

我有以下数据框:

    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()

这就是我得到的: enter image description here

现在我想从“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/

相关文章:

python - matplotlib - 具有多个轴和误差条对象的图例

python - 在 Sphinx 中使用自定义 HTML 编写器

Python初学者类变量错误

python - 从大型 MySQL 数据库中选择数据,其中一列的值在大量值列表中找到

python - 条件数据框分组

python - 如何从循环的 n 次迭代生成的 n 个字典列表中生成数据框?

Python如何覆盖第三方库模块中定义的方法

python - 对一系列系列应用自动更正

python-3.x - 将值附加到特定的 DataFrame 单元格

python - Pandas - 改变组的值