微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python:row concat 2 dataframes,将其名称保留为新列

我正在寻找Pythonic方法来做与bind_rows(R中的dplyr包)相同的方法,它从data.frames列表中进行数据帧连接,并自动将每个data.frame的名称添加为.id列以记住其中行来自.

一个简单的方法吗?我试着用pd.concat:

df1 = pd.DataFrame([['a', 1], ['b', 2]], columns=['letter', 'number'])
df2 = df1.copy()
pd.concat([df1, df2])

预期产量:

####     .id letter  number
#### 0   df1      a       1
#### 1   df1      b       2
#### 0   df2      a       1
#### 1   df2      b       2

谢谢!

解决方法:

检查键

pd.concat([df1, df2], keys=['df1', 'df2'],names =['id','index']).reset_index(level=0)
Out[880]: 
        id letter  number
index                    
0      df1      a       1
1      df1      b       2
0      df2      a       1
1      df2      b       2

如果要动态创建密钥

pd.concat({x : y for x,y in enumerate([df1, df2])},names =['id','index']).reset_index(level=0)
Out[879]: 
       id letter  number
index                   
0       0      a       1
1       0      b       2
0       1      a       1
1       1      b       2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐