我是靠谱客的博主 贪玩老师,最近开发中收集的这篇文章主要介绍python 使用pandas.DataFrame.merge合并dataframe结果为空问题解决问题描述使用代码,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
问题描述
使用python2的pandas
合并两个datafreme时,结果为空。实际上两个表格有相同的数据,但是结果并没有合并。
官网:pandas.merge
使用代码
测试1:
两个数据表格,默认pandas读取数据格式pands.dtypes
有差异,合并时无数据。
import pandas
df1 = pandas.read_csv("data1.txt", sep='t')
df2 = pandas.read_csv("data2.txt", sep='t')
pandas.merge(df1, df2, on=['name', 'value1', 'value2'])
df1.merge(df2, on=['name', 'value1', 'value2'])
测试2:
两个数据表格,默认pandas读取数据格式pands.dtypes
相同,合并时有数据。
df1 = pandas.read_csv("data1a.txt", sep='t')
df2 = pandas.read_csv("data2a.txt", sep='t')
df1.dtypes
df2.dtypes
df1
df2
pandas.merge(df1, df2, on=['name', 'value1', 'value2'])
df1.merge(df2, on=['name', 'value1', 'value2'])
测试3:
发现相同的数据类型合并没有问题,所以变更一下数据类型为object
,两个数据统一后再合并。但是合并的数据仍是空。
测试4:
统一数据类型,把对应的数据类型改为str
,不能是object
,结果合并没有问题。
(思考:为什么str
对应的object
?)
总结
使用pandas
合并数据前需要确认,合并依赖的key
(on/left_on/right_on
等)的数据类型是否一致,如果不一致,则需要使用dataframe.astype
将对应的列数据的类型进行转换。
注意:
dataframe.astype
只是返回转换后的数据,不替换原来的数据。
其他发现:
测试1的数据中,发现合并过程中不会考虑去重。就是说:当有相同的索引(on
),如果两个数据中都有重复,最终合并时,也会重复, 就是有4*4次。
<完>
最后
以上就是贪玩老师为你收集整理的python 使用pandas.DataFrame.merge合并dataframe结果为空问题解决问题描述使用代码的全部内容,希望文章能够帮你解决python 使用pandas.DataFrame.merge合并dataframe结果为空问题解决问题描述使用代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复