如何将元组值设置为pandas数据帧?

use*_*780 4 python pandas

我想做的应该是非常简单的.基本上,我有一些数据帧,我需要为某些列分配一些元组值.

例如:

pd_tmp = pd.DataFrame(np.random.rand(3,3))
pd_tmp["new_column"] = ("a",2)
Run Code Online (Sandbox Code Playgroud)

我只需要一个带有元组值的新列,我该怎么办?

ValueError: Length of values does not match length of index
Run Code Online (Sandbox Code Playgroud)

前面的代码得到错误.

Psi*_*dom 10

您可以将元组包装在列表中:

import pandas as pd
pd_tmp = pd.DataFrame(np.random.rand(3,3))
pd_tmp["new_column"] = [("a",2)] * len(pd_tmp)

pd_tmp
#          0           1           2    new_column
#0  0.835350    0.338516    0.914184    (a, 2)
#1  0.007327    0.418952    0.741958    (a, 2)
#2  0.758607    0.464525    0.400847    (a, 2)
Run Code Online (Sandbox Code Playgroud)


小智 5

我一直在寻找类似的东西,但就我而言,我希望元组是现有列的组合,而不仅仅是固定值。我找到了下面的解决方案,我分享它希望它对像我这样的其他人有用。

In [24]: df
Out[24]:
      A     B
0     1     2
1    11    22
2   111   222
3  1111  2222

In [25]: df['D'] = df[['A','B']].apply(tuple, axis=1)

In [26]: df
Out[26]:
      A     B             D
0     1     2        (1, 2)
1    11    22      (11, 22)
2   111   222    (111, 222)
3  1111  2222  (1111, 2222)
Run Code Online (Sandbox Code Playgroud)