社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python:concat 2数据帧,将其名称保留为新列

agenis • 6 年前 • 1921 次点击  

我在找一种像蟒蛇一样的方法 bind_rows ( dplyr 在r中的包),它从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

谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43016
文章 [ 2 ]  |  最新文章 6 年前
Hello.World
Reply   •   1 楼
Hello.World    7 年前
pd.concat([df1, df2],keys=['df1','df2']).reset_index(level=0).rename(columns = {'level_0':'.id'})

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

WeNYoBen
Reply   •   2 楼
WeNYoBen    7 年前

用支票 keys

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