在Salesforce中创建多个具有默认值的列

时间:2019-04-18 12:55:06

标签: python pandas dataframe

我有一个看起来像1000行10列的数据框

我想添加20列,每列中只有一个单一值(我称之为默认值)

因此,我最终的df将为1000行,包含30列

我知道我可以这样做30次:

df['column 11'] = 'default value'
df['column 12'] = 'default value 2'

但是我想以适当的编码方式完成

我的{'column label' : 'defaultvalues'}有一个字典

我该怎么办?

我尝试过pd.insertpd.concatenate,但找不到自己的路

谢谢

致谢

埃里克

2 个答案:

答案 0 :(得分:2)

一种方法:

df_len = len(df)
new_df = pd.DataFrame({col: [val] * df_len for col,val in your_dict.items()})
df = pd.concat((df,new_df), axis=1)

答案 1 :(得分:1)

通常,如果字典中新列名称的键中的空格可能与DataFrame.join一起使用DataFrame构造函数:

df = pd.DataFrame({'a':range(5)})
print (df)
   a
0  0
1  1
2  2
3  3
4  4

d = {'A 11' : 's', 'A 12':'c'}
df = df.join(pd.DataFrame(d, index=df.index))
print (df)
   a A 11 A 12
0  0    s    c
1  1    s    c
2  2    s    c
3  3    s    c
4  4    s    c

如果列名中没有空格和数字(需要有效的标识符),则可以使用DataFrame.assign

d = {'A11' : 's', 'A12':'c'}
df = df.assign(**d)
print (df)
   a A11 A12
0  0   s   c
1  1   s   c
2  2   s   c
3  3   s   c
4  4   s   c

另一种解决方案是按字典循环并分配:

for k, v in d.items():
    df[k] = v