请选择 进入手机版 | 继续访问电脑版
楼主: fccy309
1586 10

[问答] 求助 批量数据合并 [推广有奖]

  • 2关注
  • 1粉丝

大专生

26%

还不是VIP/贵宾

-

威望
0
论坛币
14 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
442 点
帖子
18
精华
0
在线时间
71 小时
注册时间
2011-6-14
最后登录
2023-2-21

fccy309 发表于 2018-1-12 14:11:12 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如何将多个关联数据文件合并 0003.png

合并后
0004.png




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据合并 数据文件 文件合并

fccy309 发表于 2018-1-12 14:30:12 |显示全部楼层 |坛友微信交流群
ID是固定     日期有N+1日        “A B C D ......"有49个

使用道具

gjinwei 发表于 2018-1-12 15:02:05 |显示全部楼层 |坛友微信交流群
  1. import glob
  2. import pandas as pd

  3. files=glob.glob(r'D:\test\*.txt')

  4. df=pd.read_table(files[0])
  5. for file in files[1:]:
  6.     df=pd.merge(left=df,right=pd.read_table(file),on=['ID','日期'])
  7. print(df)
复制代码

QQ截图20180112150136.png

使用道具

fccy309 发表于 2018-1-12 15:05:50 |显示全部楼层 |坛友微信交流群
gjinwei 发表于 2018-1-12 15:02
OK! 及时雨

使用道具

fccy309 发表于 2018-1-12 16:07:27 |显示全部楼层 |坛友微信交流群
0005.png
运行出错了。
txt文件太了,我将txt文件转成excel文件,代码 ”*.txt“是不是改成”.xlsx“

使用道具

fccy309 发表于 2018-1-12 16:28:51 |显示全部楼层 |坛友微信交流群
A.xlsx (2.09 MB) B.xlsx (1.9 MB) 我将其中两个txt文件转成excel文件上传

使用道具

gjinwei 发表于 2018-1-12 20:31:31 |显示全部楼层 |坛友微信交流群
这个问题的核心是解决编码问题,你转化出来的excel文件不能直接用pandas解析,需要手动打开后再保存才能正常打开,然后注意每次把结果文件剪切出去或者把结果文件指定到其他文件夹
代码如下:
  1. import glob
  2. import pandas as pd

  3. files=glob.glob(r'D:\test\*.xlsx')

  4. df=pd.read_excel(files[0])
  5. for file in files[1:]:
  6.     df=pd.merge(left=df,right=pd.read_excel(file),on=['ID','日期'])
  7. df.to_excel(r'D:\test\result.xlsx')
复制代码

附上转化结果:
result.xlsx (2.24 MB)

result.xlsx

2.79 MB

使用道具

gjinwei 发表于 2018-1-12 22:58:34 |显示全部楼层 |坛友微信交流群
要解决编码问题,首先要清楚你的文件的编码格式是什么。pd.read_excel是不带encoding参数(默认以utf8解析),因此必须采取变通的方法。你给出的这两个文件是cp936的编码,参考如下可以不手动打开excel:

  1. import glob
  2. import pandas as pd

  3. files=glob.glob(r'D:\test\*.xlsx')
  4. with open(files[0],encoding='cp936') as f:
  5.     df=pd.read_excel(f)
  6.    
  7. for file in files[1:]:
  8.     with open(file,encoding='cp936') as f:
  9.         df=pd.merge(left=df,right=pd.read_excel(f),on=['ID','日期'])
  10. df.to_excel(r'D:\test\result.xlsx',index=False)
复制代码

使用道具

fccy309 发表于 2018-1-12 23:46:43 来自手机 |显示全部楼层 |坛友微信交流群
gjinwei 发表于 2018-1-12 22:58
要解决编码问题,首先要清楚你的文件的编码格式是什么。pd.read_excel是不带encoding参数(默认以utf8解析) ...
谢谢!大神

使用道具

gjinwei 发表于 2018-1-13 10:14:13 |显示全部楼层 |坛友微信交流群
fccy309 发表于 2018-1-12 23:46
谢谢!大神
代码太不简洁了!继续查资料,惊奇地发现可以这样:
  1. import glob
  2. import pandas as pd

  3. files=glob.glob(r'D:\test\*.xlsx')

  4. df=pd.read_excel(files[0],engine='xlrd')
  5.    
  6. for file in files[1:]:
  7.     df=pd.merge(left=df,right=pd.read_excel(file,engine='xlrd'),on=['ID','日期'])
  8. df.to_excel(r'D:\test\result.xlsx',index=False)
复制代码

xlrd竟然自动解决了编码的问题

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-9-7 22:04