我遵循简单的DataFrame - df
:
0 0 1 1 2 2 3
一旦我尝试创建新列并为它们分配一些值,如下例所示:
df['col2', 'col3'] = [(2,3), (2,3), (2,3)]
我有以下结构
0 (col2, col3) 0 1 (2, 3) 1 2 (2, 3) 2 3 (2, 3)
但是,我正在寻找一种方法来获取:
0 col2, col3 0 1 2, 3 1 2 2, 3 2 3 2, 3
SpanishBoy.. 12
看起来解决方案很简单:
df['col2'], df['col3'] = zip(*[(2,3), (2,3), (2,3)])
虽然此代码可能会回答这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它.从长远来看,仅代码的答案无用. (2认同)
如果您有分配100列的优化解决方案,请随意分享. (2认同)
@shadowtalker,我*认为*还有一种更好的方法。.您可以将数据帧分配给'df [[''col2','col3']]]',请参阅我的答案。 (2认同)
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
例如,当您希望加入任意数量的系列时,这很方便。
看起来解决方案很简单:
df['col2'], df['col3'] = zip(*[(2,3), (2,3), (2,3)])
有一个方便的解决方案,可以通过元组列表将多个序列连接到一个数据框。您可以在分配之前从元组列表构造一个数据框:
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
例如,当您希望加入任意数量的系列时,这很方便。