我有一行Pandas数据帧。我想同时添加一个名为new_cols
的列列表,并将它们的所有值设置为0.
有这么简单的方法吗?
我的尝试:
article_features[new_cols] = 0
但这不起作用:(
谢谢!
答案 0 :(得分:2)
我们可以使用assign
方法。
演示:
In [43]: df
Out[43]:
a b c
0 1 2 3
1 4 5 6
In [44]: new_cols
Out[44]: ['c1', 'c2', 'c3']
选项1:
In [46]: df = df.assign(**{c:0 for c in new_cols})
In [47]: df
Out[47]:
a b c c1 c2 c3
0 1 2 3 0 0 0
1 4 5 6 0 0 0
选项2:
In [106]: df = df.join(pd.DataFrame(0, df.index, new_cols))
In [107]: df
Out[107]:
a b c c1 c2 c3
0 1 2 3 0 0 0
1 4 5 6 0 0 0
添加字符串值:
In [49]: df = df.assign(**{c:'0' for c in new_cols})
In [50]: df
Out[50]:
a b c c1 c2 c3
0 1 2 3 0 0 0
1 4 5 6 0 0 0
In [51]: df.dtypes
Out[51]:
a int64
b int64
c int64
c1 object
c2 object
c3 object
dtype: object
答案 1 :(得分:2)
使用pd.DataFrame.reindex_axis
和fill_value=0
参数。
df.reindex_axis(df.columns.union(new_cols), axis=1, fill_value=0)
a b c c1 c2 c3
0 1 2 3 0 0 0
1 4 5 6 0 0 0
或者对于字符串使用fill_value='0'
df.reindex_axis(df.columns.union(new_cols), 1, fill_value='0')
a b c c1 c2 c3
0 1 2 3 0 0 0
1 4 5 6 0 0 0
<强>设置强>
我从@MaxU借来了物品
df = pd.DataFrame({'a': [1, 4], 'b': [2, 5], 'c': [3, 6]})
new_cols = ['c1', 'c2', 'c3']
答案 2 :(得分:0)
您可以在循环中添加列:
for col in new_cols:
df[col] = 0