首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用字典向pandas数据框添加列

使用字典向pandas数据框添加列
EN

Stack Overflow用户
提问于 2021-03-26 14:31:55
回答 4查看 52关注 0票数 1

我想根据字典向现有的数据框架中添加列。如果我的数据帧看起来像这样:

代码语言:javascript
复制
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

我的字典是这样的:

代码语言:javascript
复制
new_cols= {"adj1":"adjustment1","adj2":"adjustment2"}

然后,我尝试获取一个数据帧,如下所示:

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-03-26 14:33:15

通过**DataFrame.assign与解压缩字典一起使用

代码语言:javascript
复制
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

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2021-03-26 14:35:46

您也可以通过以下方式完成此操作:-

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2021-03-26 14:40:59

一种方法是使用pd.concat

代码语言:javascript
复制
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  adjustment2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66812036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档