python:行连接 2 个数据帧,将它们的名称保留为新列

我正在寻找 Pythonic 的方式来做等效的bind_rows(dplyrR 中的包),它从 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


紫衣仙女
浏览 131回答 2
2回答

子衿沉夜

检查 keyspd.concat([df1, df2], keys=['df1', 'df2'],names =['id','index']).reset_index(level=0)Out[880]:         id letter  numberindex                    0      df1      a       11      df1      b       20      df2      a       11      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  numberindex                   0       0      a       11       0      b       20       1      a       11       1      b       2

四季花海

pd.concat([df1, df2],keys=['df1','df2']).reset_index(level=0).rename(columns = {'level_0':'.id'})    id  letter  number0   df1 a   11   df1 b   20   df2 a   11   df2 b   2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python