我有一个单一行的熊猫数据框。我想同时添加一列名为new_cols
的列,并将它们的所有值设置为0.熊猫:将特定列设置为0
是否有直接的方法可以做到这一点?
我尝试:
article_features[new_cols] = 0
但是,这并不工作:(
感谢
我有一个单一行的熊猫数据框。我想同时添加一列名为new_cols
的列,并将它们的所有值设置为0.熊猫:将特定列设置为0
是否有直接的方法可以做到这一点?
我尝试:
article_features[new_cols] = 0
但是,这并不工作:(
感谢
使用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']
我们可以用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
您可以在一个循环中添加列:
for col in new_cols:
df[col] = 0
什么是'new_cols'的数据类型? – DyZ
@DYZ这是一个字符串 – bclayman
_list_从哪里来,然后呢? – DyZ