首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我将如何将Pandas DataFrames与略有不同的列组合起来

我将如何将Pandas DataFrames与略有不同的列组合起来
EN

Stack Overflow用户
提问于 2020-05-07 03:57:48
回答 4查看 475关注 0票数 1

我和几个DataFrames一起工作。其中一个有添加的列,还有一些删除的列。这两个列的第一列都是日期列,按时间顺序,df2取df1停止的位置。

代码语言:javascript
运行
复制
df1:
day     alice  bob
8/11    0      0
8/25    2      5
9/1     2      0

df2:
day     alice  charlie
9/12    1      1
9/25    2      3
9/1     2      1

我想把它们结合起来,得到一个包含所有日期和所有列的DataFrame。

代码语言:javascript
运行
复制
df3: 
day     alice  bob  charlie
8/11    0      0      0 
8/25    2      5      0 
9/1     2      0      0
9/12    1      0      1
9/25    2      0      3
9/1     2      0      1

当我将实际的2 DataFrames与pd.concat或pd附加相结合时,我会得到以下错误:

代码语言:javascript
运行
复制
AssertionError: Number of manager items must equal union of block items
# manager items: 65, # tot_items: 66

不知道会有什么问题。同时,谢谢你,你太棒了。如果需要的话,我可以给你提供一个更充实的例子。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-05-07 04:43:35

解决办法是正确的:

代码语言:javascript
运行
复制
df = pd.concat([df1,df2]).fillna(0)

但以下是错误:

AssertionError:管理项的数量必须等于块项的总和# manager项: 65,# tot_items: 66

这意味着有重复的列名,您可以验证它:

代码语言:javascript
运行
复制
print (df1.loc[:, df1.columns.duplicated(keep=False)])
print (df2.loc[:, df2.columns.duplicated(keep=False)])

如果列中相同的值是可能的,则删除以下重复值:

代码语言:javascript
运行
复制
df1 = df1.loc[:, ~df1.columns.duplicated()]
df2 = df2.loc[:, ~df2.columns.duplicated()]
df = pd.concat([df1,df2]).fillna(0)
票数 2
EN

Stack Overflow用户

发布于 2020-05-07 04:04:56

我认为这是可行的:

代码语言:javascript
运行
复制
df3 = pd.concat([df1.set_index("day"), df2.set_index("day")]).fillna(value=0).reset_index()
票数 0
EN

Stack Overflow用户

发布于 2020-05-07 04:09:35

代码语言:javascript
运行
复制
df1['charlie']=0
df2['bob']=0
df=pd.concat([df1,df2]).reset_index().drop(['index'],axis=1)

说明:您可以添加各个数据帧中缺少的列。现在,如果您连接(),就不会引发错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61649651

复制
相关文章

相似问题

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