我有一个看起来像1000行10列的数据框
我想添加20列,每列中只有一个单一值(我称之为默认值)
因此,我最终的df将为1000行,包含30列
我知道我可以这样做30次:
df['column 11'] = 'default value'
df['column 12'] = 'default value 2'
但是我想以适当的编码方式完成
我的{'column label' : 'defaultvalues'}
有一个字典
我该怎么办?
我尝试过pd.insert
或pd.concatenate
,但找不到自己的路
谢谢
致谢
埃里克
答案 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