python - 使用 pandas 合并多个 CVS 文件
问题描述
我正在努力使用熊猫合并多个 .csv 文件。
所有文件都具有如下所示的相同结构,其中每个 csv 的“UniqueColumn”各不相同,每个 csv 的“名称”列都相同,但它们的排序方式不同:
csv1:
Name, UniqueColumnA
testName, DataA
...
csv2:
Name, UniqueColumnB
testName, DataB
...
等等
所需的合并 csv 文件如下所示:
Name, UniqueColumnA, UniqueColumnB, UniqueColumnC
testName, DataA, DataB, DataC
我尝试使用以下代码:
files = glob.glob(r'pathname*.csv')
df = pd.concat([pd.read_csv(f, index_col=['Name']) for f in files])
df.to_csv('merged.csv')
但输出是
testName, DataA
testName, DataB
...
我对 Python 不是很熟悉,尤其是对 pandas,所以我非常感谢您的帮助
解决方案
有重复的索引,您需要告诉熊猫如何处理它们,在您的情况下,您需要一个,inner join
因此以下内容应该适合您:
df = pd.concat([pd.read_csv(f, index_col='Name') for f in files], join='inner', axis=1)
推荐阅读
- android - Room - 是否可以在查询中使用 OFFSET 和 FETCH NEXT?
- firefox - 由于内容安全策略,阻止从 Firefox 扩展向外部 URL 发布数据
- vue.js - 尝试在现有项目中运行 Modal 组件 VueJS
- token - 自定义代币余额在合约创建后出现 0(零)
- ios - iOS 推送通知并不总是发送:取决于字符数 + wifi 连接速度 + 设备上的可用空间?
- python - 使用python将列表元素转换为连续的元组
- python - Pyspark 读取数据 - java.util.NoSuchElementException: spark.sql.execution.pandas.respectSessionTimeZone
- javascript - 跟踪 javascript 运行时错误
- spring-integration - AcceptOnceFileListFilter 在 Spring Integration JAVA DSL 中覆盖 SimplePatternFileListFilter
- openmdao - N^2图说明