2017-07-31 123 views
0

我有一個單一行的熊貓數據框。我想同時添加一列名爲new_cols的列,並將它們的所有值設置爲0.熊貓:將特定列設置爲0

是否有直接的方法可以做到這一點?

我嘗試:

article_features[new_cols] = 0但是,這並不工作:(

感謝

+0

什麼是'new_cols'的數據類型? – DyZ

+0

@DYZ這是一個字符串 – bclayman

+0

_list_從哪裏來,然後呢? – DyZ

回答

2

使用pd.DataFrame.reindex_axisfill_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

我們可以用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 
+0

OP聲明'new_cols'是一個字符串。 – DyZ

+0

@DYZ對不起,'new_cols'是'unicode'... – bclayman

0

您可以在一個循環中添加列:

for col in new_cols: 
    df[col] = 0