我想根据字典向现有的数据框架中添加列。如果我的数据帧看起来像这样:
import pandas as pd
column_names=['name','surname','age']
lfa=[("tom","jones",44),("elvis","prestley",50),("jim","reeves",30)]
lfa=pd.DataFrame(lfa,columns=column_names)
lfa我的字典是这样的:
new_cols= {"adj1":"adjustment1","adj2":"adjustment2"}然后,我尝试获取一个数据帧,如下所示:
column_names=['name','surname','age','adj1','adj2']
lfa=[("tom","jones",44,"adjustment1","adjustment2"),
("elvis","prestley",50,"adjustment1","adjustment2"),
("jim","reeves",30,"adjustment1","adjustment2")]
lfa=pd.DataFrame(lfa,columns=column_names)
lfa发布于 2021-03-26 14:33:15
通过**将DataFrame.assign与解压缩字典一起使用
df = lfa.assign(**new_cols)
print (df)
name surname age adj1 adj2
0 tom jones 44 adjustment1 adjustment2
1 elvis prestley 50 adjustment1 adjustment2
2 jim reeves 30 adjustment1 adjustment2或DataFrame.join
df = lfa.join(pd.DataFrame(new_cols, index=lfa.index))
print (df)
name surname age adj1 adj2
0 tom jones 44 adjustment1 adjustment2
1 elvis prestley 50 adjustment1 adjustment2
2 jim reeves 30 adjustment1 adjustment2发布于 2021-03-26 14:35:46
您也可以通过以下方式完成此操作:-
lfa[list(new_cols.keys())]=new_cols.values()
print(lfa)
name surname age adj1 adj2
0 tom jones 44 adjustment1 adjustment2
1 elvis prestley 50 adjustment1 adjustment2
2 jim reeves 30 adjustment1 adjustment2发布于 2021-03-26 14:40:59
一种方法是使用pd.concat
In [533]: df = pd.concat([lfa, pd.DataFrame(new_cols, index=lfa.index)], 1)
In [534]: df
Out[534]:
name surname age adj1 adj2
0 tom jones 44 adjustment1 adjustment2
1 elvis prestley 50 adjustment1 adjustment2
2 jim reeves 30 adjustment1 adjustment2https://stackoverflow.com/questions/66812036
复制相似问题