将值分配给Pandas中的多个列

Spa*_*Boy 7 python series dataframe python-2.7 pandas

我遵循简单的DataFrame - df:

   0
0  1
1  2
2  3
Run Code Online (Sandbox Code Playgroud)

一旦我尝试创建新列并为它们分配一些值,如下例所示:

df['col2', 'col3'] = [(2,3), (2,3), (2,3)]
Run Code Online (Sandbox Code Playgroud)

我有以下结构

   0 (col2, col3)
0  1    (2, 3)
1  2    (2, 3)
2  3    (2, 3)
Run Code Online (Sandbox Code Playgroud)

但是,我正在寻找一种方法来获取:

   0 col2, col3
0  1    2,   3
1  2    2,   3
2  3    2,   3
Run Code Online (Sandbox Code Playgroud)

Spa*_*Boy 12

看起来解决方案很简单:

df['col2'], df['col3'] = zip(*[(2,3), (2,3), (2,3)])
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可能会回答这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它.从长远来看,仅代码的答案无用. (2认同)
  • 如果您的问题很简单,那么解决方案也很简单。如果您想同时分配 100 列,解决方案是无用的。 (2认同)
  • 如果您有分配100列的优化解决方案,请随意分享. (2认同)
  • @shadowtalker,我*认为*还有一种更好的方法。.您可以将数据帧分配给'df [[''col2','col3']]]',请参阅我的答案。 (2认同)

jpp*_*jpp 6

有一个方便的解决方案,可以通过元组列表将多个序列连接到一个数据框。您可以分配之前从元组列表构造一个数据框:

df = pd.DataFrame({0: [1, 2, 3]})
df[['col2', 'col3']] = pd.DataFrame([(2,3), (2,3), (2,3)])

print(df)

   0  col2  col3
0  1     2     3
1  2     2     3
2  3     2     3
Run Code Online (Sandbox Code Playgroud)

例如,当您希望加入任意数量的系列时,这很方便。

  • 迄今为止最好的解决方案!特别是当你有一个 numpy 数组时。 (2认同)