Pandas Python:如何从列表中创建多列

新手上路,请多包涵

我有一个包含要创建的列的列表:

 new_cols = ['new_1', 'new_2', 'new_3']

我想在数据框中创建这些列并用零填充它们:

 df[new_cols] = 0

得到错误:

 "['new_1', 'new_2', 'new_3'] not in index"

这是真的,但很不幸,因为我想创建它们……

编辑:这是这个问题的副本: Add multiple empty columns to pandas DataFrame 但是我也保留了这个,因为这里接受的答案是我正在寻找的简单解决方案,但他并没有接受那里的答案

编辑 2:虽然接受的答案是最简单的,但下面发布了有趣的单行解决方案

原文由 Vincent 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 419
2 个回答

您需要一一添加列。

 for col in new_cols:
    df[col] = 0

另请参阅 此处 的其他方法的答案。

原文由 Fabian Ying 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 assign 按字典:

 df = pd.DataFrame({
    'A': ['a','a','a','a','b','b','b','c','d'],
    'B': list(range(9))
})
print (df)
0  a  0
1  a  1
2  a  2
3  a  3
4  b  4
5  b  5
6  b  6
7  c  7
8  d  8

new_cols = ['new_1', 'new_2', 'new_3']
df = df.assign(**dict.fromkeys(new_cols, 0))
print (df)
   A  B  new_1  new_2  new_3
0  a  0      0      0      0
1  a  1      0      0      0
2  a  2      0      0      0
3  a  3      0      0      0
4  b  4      0      0      0
5  b  5      0      0      0
6  b  6      0      0      0
7  c  7      0      0      0
8  d  8      0      0      0

原文由 jezrael 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题