gpt4 book ai didi

python - 将 pandas 数据框元素转换为元组

转载 作者:行者123 更新时间:2023-11-30 22:33:00 24 4
gpt4 key购买 nike

我有一个数据框:

>>> df = pd.DataFrame(np.random.random((3,3)))
>>> df
0 1 2
0 0.732993 0.611314 0.485260
1 0.935140 0.153149 0.065653
2 0.392037 0.797568 0.662104

对我来说,将每个条目转换为二元组(其中第一个元素来自当前数据帧,第二个元素来自最后列 ('2'))的最简单方法是什么?

即我希望最终的结果是:

                      0                    1                      2
0 (0.732993, 0.485260) (0.611314, 0.485260) (0.485260, 0.485260)
1 (0.935140, 0.065653) (0.153149, 0.065653) (0.065653, 0.065653)
2 (0.392037, 0.662104) (0.797568, 0.662104) (0.662104, 0.662104)

最佳答案

从 pd 版本 0.20 开始,您可以使用 df.transform:

In [111]: df
Out[111]:
0 1 2
0 1 3 4
1 2 4 5
2 3 5 6

In [112]: df.transform(lambda x: list(zip(x, df[2])))
Out[112]:
0 1 2
0 (1, 4) (3, 4) (4, 4)
1 (2, 5) (4, 5) (5, 5)
2 (3, 6) (5, 6) (6, 6)

或者,使用 df.apply 的另一个解决方案:

In [113]: df.apply(lambda x: list(zip(x, df[2])))
Out[113]:
0 1 2
0 (1, 4) (3, 4) (4, 4)
1 (2, 5) (4, 5) (5, 5)
2 (3, 6) (5, 6) (6, 6)

您还可以使用字典理解:

In [126]: pd.DataFrame({i : df[[i, 2]].apply(tuple, axis=1) for i in df.columns})
Out[126]:
0 1 2
0 (1, 4) (3, 4) (4, 4)
1 (2, 5) (4, 5) (5, 5)
2 (3, 6) (5, 6) (6, 6)

关于python - 将 pandas 数据框元素转换为元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45283998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com