Python根据相同列合并csv文件(不去除不相同数据行)

接上一篇文章,如何在合并相同列的csv文件的情况下,保留未匹配到的数据行?

import pandas as pd
import os

df01 = pd.read_csv("C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\01.csv",encoding = 'gb2312',dtype='str')

df02 = pd.read_csv("C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\02.csv",encoding = 'gb2312',dtype='str')


df_pri = pd.merge(df01,df02,on='date',how='outer')
df_pri.to_csv('0102.csv',header=True,index=False)

重点在how='outer'。

意思是取全连接。

例如:

表1:

dateab
2021-11-0914
2021-11-1025
2021-11-1136

表2:

datea
2021-11-091
2021-11-102
2021-11-113
2021-11-127

运行程序得到的结果:

dateab
2021-11-0914
2021-11-1025
2021-11-1136
2021-11-127NaN
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用pandas库来合并CSV文件按主键。以下是三种常见的方法: 方法一:使用merge函数 可以使用merge函数来合并CSV文件,通过指定主键来进合并。示例代码如下: ```python import pandas as pd df1 = pd.read_csv('file1.csv') df2 = pd.read_csv('file2.csv') df3 = pd.read_csv('file3.csv') merged_df = pd.merge(df1, df2, on='id', how='inner') merged_df = pd.merge(merged_df, df3, on='id', how='inner') merged_df.to_csv('merged_file.csv', index=False) ``` 方法二:使用concat函数和groupby函数 可以使用concat函数将多个DataFrame按合并,然后使用groupby函数按主键分组和求和。示例代码如下: ```python import pandas as pd file_list = \['file1.csv', 'file2.csv', 'file3.csv'\] df_list = \[\] for file in file_list: df = pd.read_csv(file) df_list.append(df) merged_df = pd.concat(df_list, axis=0, ignore_index=True).groupby('id').sum() merged_df.to_csv('merged_file.csv') ``` 方法三:使用glob库和to_csv函数 可以使用glob库来获取所有的CSV文件路径,然后使用to_csv函数将每个文件逐个合并到一个结果文件中。示例代码如下: ```python import glob import os import pandas as pd inputfile = os.path.join(os.getcwd(), 'Data', '*.csv') outputfile = os.path.join(os.getcwd(), 'Data', 'result.csv') csv_list = glob.glob(inputfile) df_list = \[\] for filepath in csv_list: df = pd.read_csv(filepath) df_list.append(df) merged_df = pd.concat(df_list, axis=0, ignore_index=True) merged_df.to_csv(outputfile, index=False) ``` 以上是三种常见的方法,根据具体需求选择适合的方法来合并CSV文件按主键。 #### 引用[.reference_title] - *1* [Python根据相同合并csv文件(不去除相同数据)](https://blog.csdn.net/Han_torch/article/details/121229800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python根据id 合并多个csv文件](https://blog.csdn.net/m0_67268069/article/details/129785023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python合并(拼接)多个CSV文件](https://blog.csdn.net/qq_40987844/article/details/101289520)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值