如何用Python Pandas将三个单列CSV文件按行对齐合并?
CSV单列文件合并问题
我是Python新手,遇到了CSV文件合并的问题:现有三个单列CSV文件,分别包含label、timestamp、start列。我尝试使用pd.concat方法执行合并,代码如下:
concate_data = pd.concat([label,timestamp,start])
代码可运行但结果不符合预期,得到的是纵向堆叠的表格,存在大量null值(见下方错误结果)。我需要将三个文件合并为每行label、timestamp、start列均对应有值的格式(见下方期望结果),请问该如何实现?
错误结果
| label | timestamp | start |
|---|---|---|
| Eating | null | null |
| Eating | null | null |
| null | 2012:02:02 12:00:01 | null |
| null | null | 1 |
| null | null | 0 |
期望结果
| label | timestamp | start |
|---|---|---|
| Eating | 2012:02:02 12:00:01 | 1 |
| Eating | 2012:02:02 12:01:01 | 0 |
| Eating | 2012:02:02 12:01:01 | 0 |
解决方法
pd.concat()默认是纵向堆叠(axis=0),所以会把三个表上下拼接,导致大量空值。要实现横向按行对齐合并,只需调整参数即可:
正确代码
import pandas as pd # 读取三个单列CSV文件 label = pd.read_csv('label.csv') timestamp = pd.read_csv('timestamp.csv') start = pd.read_csv('start.csv') # 横向拼接,按行索引对齐 concate_data = pd.concat([label, timestamp, start], axis=1) # 可选:重置索引 concate_data = concate_data.reset_index(drop=True) # 输出结果 print(concate_data)
关键说明
axis=1参数指定横向拼接,将三个单列DataFrame按行索引合并成多列,每行的label、timestamp、start会自动对齐。- 如果三个文件行数不一致,拼接后行数较多的文件会在末尾产生空值,需先确认数据对应关系,必要时用
join='inner'参数只保留共同行:concate_data = pd.concat([label, timestamp, start], axis=1, join='inner')
内容的提问来源于stack exchange,提问作者Dominic Pfeifer
相关产品推荐
相关产品推荐

