python - 使用 python 和 pandas 组合 csv 列
问题描述
我有两个 csv 数据文件。PV.csv 有这样的行:
date,PVkW
2018/03/05 11:00,887.4
2018/03/05 12:00,940.9
2018/03/05 13:00,927.2
2018/03/05 14:00,845.9
2018/03/05 15:00,683.0
2018/03/05 16:00,423.1
2018/03/05 17:00,186.4
和 TBL.csv 有这样的行:
date,TBLkW
2018/03/05 11:00,277.01953
2018/03/05 12:00,285.30783
2018/03/05 13:00,236.8461
2018/03/05 14:00,243.26564
2018/03/05 15:00,274.98438
2018/03/05 16:00,255.20079
2018/03/05 17:00,262.28046
我正在使用下面的脚本来获取一个包含条目日期 PVkW TBLkW 的文件,但我得到的只是日期 PVkW 的副本。我错过了什么?
import pandas as pd
a = pd.read_csv('PV.csv')
b = pd.read_csv('TBL.csv')
b = b.dropna(axis=1)
merged = a.merge(b, on='date')
merged.to_csv("combined.csv", index=False)
该脚本正在完成而没有错误。
如果一个文件有另一个文件没有的日期条目,这个脚本会继续工作吗?
解决方案
pandas.merge 的默认模式是 'inner',它将采用两个列表的交集。所以你的脚本工作,如果一个文件有一个日期条目而另一个文件没有,它会继续,但是如果你希望你的结果文件包含所有数据,那么你应该使用“外部”模式。
更多信息在这里:https ://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html
例如 PV.csv 像:
date,PVkW
2018/03/05 11:00,887.4
2018/03/05 12:00,940.9
2018/03/05 13:00,927.2
2018/03/05 14:00,845.9
2018/03/05 15:00,683.0
2018/03/05 16:00,423.1
2018/03/05 17:00,186.4
2018/03/05 18:00,186.4
TBL.csv 喜欢:
date,TBLkW
2018/03/05 11:00,277.01953
2018/03/05 12:00,285.30783
2018/03/05 13:00,236.8461
2018/03/05 14:00,243.26564
2018/03/05 15:00,274.98438
2018/03/05 16:00,255.20079
2018/03/05 17:00,262.28046
这个脚本:
import pandas as pd
a = pd.read_csv('PV.csv')
b = pd.read_csv('TBL.csv')
b = b.dropna(axis=1)
merged = a.merge(b, how='outer', on='date')
merged.to_csv("combined.csv", index=False)
你得到 :
date,PVkW,TBLkW
2018/03/05 11:00,887.4,277.01953
2018/03/05 12:00,940.9,285.30782999999997
2018/03/05 13:00,927.2,236.8461
2018/03/05 14:00,845.9,243.26564
2018/03/05 15:00,683.0,274.98438
2018/03/05 16:00,423.1,255.20078999999998
2018/03/05 17:00,186.4,262.28046
2018/03/05 18:00,186.4,
推荐阅读
- oracle - 所有条目选择的 max_blocking_factor 和索引提示
- python - 如何使用信号在 Django 中基于用户属性创建特定配置文件
- cookies - 未在 iOS Safari 或 Chrome 中设置或发送请求的 Cookie 适用于所有 Android 和桌面浏览器
- c# - 如何测试 JSON 对象中的必填字段?
- continuous-integration - 如何在 Azure DevOps/TFS2018 中设置多个构建环境?
- scala - “未定义类型(值:org.apache.spark.sql.Row)Unit 的类 ForeachWriter 中的方法过程”对于 ForeachWriter 是什么意思?
- sql - 基于计算列分组的 db2 查询
- apache-spark - pyspark - 聚合(总和)向量元素
- algorithm - 对基于位置的社交网络的帖子供稿进行排序的评分公式的建议
- c++ - 如何使程序循环?