>问题
给定此数据帧:
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
最简单的途径是什么:
0 1 2
0 (1, 0) (2, 0) (3, 0)
1 (4, 0) (5, 0) (6, 0)
2 (7, 0) (8, 0) (9, 0)
>深思熟虑的问题和方法有没有办法将现有数据帧转换为元组的数据帧?
我还没有找到这样做的方法,也没有想到更好的选择,所以我目前的方法是创建一个新的df
,用元组(entry, flag)
替换每个条目。
为此,我想将原始df
copy
或add
到具有空元组(0, 0)
的df
,以避免手动迭代和改革每个条目到新df
中。
请注意,我想将标志添加到每个条目,而不是每行,使这个问题不同于将二进制标志添加到熊猫数据帧。
更新
实际上,我们似乎需要将其作为一个列表,因为元组是不可变的
简单使用applymap
(逐个单元格):
>>> df.applymap(lambda x: [x, 0])
0 1 2
0 [1, 0] [2, 0] [3, 0]
1 [4, 0] [5, 0] [6, 0]
2 [7, 0] [8, 0] [9, 0]
或者理解apply
:
>>> df.apply(lambda x: [[i, 0] for i in x])
0 1 2
0 [1, 0] [2, 0] [3, 0]
1 [4, 0] [5, 0] [6, 0]
2 [7, 0] [8, 0] [9, 0]