如何使用 Python Pandas 比较两个不同大小的数据集?
Posted
技术标签:
【中文标题】如何使用 Python Pandas 比较两个不同大小的数据集?【英文标题】:How can I compare two different sized data sets using Python Pandas? 【发布时间】:2021-09-11 00:23:25 【问题描述】:我正在创建一个脚本,用于比较两个 Excel 工作表的差异,然后将比较结果写入一个新的 CSV 文件。我尝试了以下教程,但在尝试运行我的脚本时出现错误:“ValueError:只能比较标记相同的 DataFrame 对象”。我做错了什么?
我的代码如下:
import pandas as pd
pd.set_option('display.max_rows', 2500)
pd.set_option('display.max_columns', 2500)
pd.set_option('display.width', 2000)
df1 = pd.read_excel('Old Budget.xlsx')
df2 = pd.read_excel('New Budget.xlsx')
diffs = df1[df1!=df2]
df1[df1!=df2].to_csv ('Differences.csv', index = False, header=True)
print (diffs)
我的示例数据框:
import pandas as pd
data = [['tom', 10], ['nick', 15], ['juli', 14],['kelly', 10], ['mark', 15], ['james', 14]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
df
import pandas as pd
data = [['tom', 60], ['nick', 15], ['juli', 10],['kelly', 10]]
df = pd.DataFrame(data, columns = ['Name', 'Age'])
df
谢谢。
【问题讨论】:
df1.dropna
只是一个函数对象。如果你想改变现有的数据框,你可以调用它df1.dropna(inplace=True)
。有时最好只重新分配数据框:df1 = df1.dropna()
。
我们没有您的 excel 文件,并且由于它们对答案并不那么重要,因此请考虑仅初始化两个具有您想要测试的差异的数据框。然后我们可以复制并运行您的代码。
@tdelaney 好的,刚刚在我的帖子中添加了两个数据框。希望一切格式正确,我是新来的。
【参考方案1】:
使用merge 操作:
import pandas as pd
data = [['tom', 10], ['nick', 15], ['juli', 14], ['kelly', 10], ['mark', 15], ['james', 14]]
df1 = pd.DataFrame(data, columns=['Name', 'Age'])
data = [['tom', 60], ['nick', 15], ['juli', 10], ['kelly', 10]]
df2 = pd.DataFrame(data, columns=['Name', 'Age'])
df1 = df1.rename(columns='Age': 'Old Age')
df2 = df2.rename(columns='Age': 'New Age')
df3 = df1.merge(df2)
df3 = df3[df3['Old Age'] != df3['New Age']]
print(df3)
# Output:
# Name Old Age New Age
# 0 tom 10 60
# 2 juli 14 10
【讨论】:
谢谢。当我尝试将此答案转换为我的业务需求时,我遇到了一个关键错误。import pandas as pd cols= [0,1,2] df1 = pd.read_excel('Servers.xlsx', usecols=cols) df2 = pd.read_excel('ServersIntl.xlsx', usecols=cols) df1 = df1.rename(columns='IP': 'Old IP') df2 = df2.rename(columns='IP': 'New IP') df3 = df1.merge(df2) df3 = df3[df3['Old IP'] != df3['New IP']] print(df3)
以上是关于如何使用 Python Pandas 比较两个不同大小的数据集?的主要内容,如果未能解决你的问题,请参考以下文章