相关疑难解决方法(0)

比较两个数据帧并获得差异

我有两个数据帧.例子:

df1:
Date       Fruit  Num  Color 
2013-11-24 Banana 22.1 Yellow
2013-11-24 Orange  8.6 Orange
2013-11-24 Apple   7.6 Green
2013-11-24 Celery 10.2 Green

df2:
Date       Fruit  Num  Color 
2013-11-24 Banana 22.1 Yellow
2013-11-24 Orange  8.6 Orange
2013-11-24 Apple   7.6 Green
2013-11-24 Celery 10.2 Green
2013-11-25 Apple  22.1 Red
2013-11-25 Orange  8.6 Orange
Run Code Online (Sandbox Code Playgroud)

每个数据帧都以Date作为索引.两个数据帧都具有相同的结构.

我想要做的是比较这两个数据帧,并找出df2中哪些行不在df1中.我想比较日期(索引)和第一列(Banana,APple等),看看它们是否存在于df2和df1中.

我尝试过以下方法:

对于第一种方法,我得到了这个错误:"异常:只能比较标记相同的DataFrame对象".我已经尝试删除日期作为索引,但得到相同的错误.

第三种方法中,我得到断言返回False但无法弄清楚如何实际看到不同的行.

任何指针都会受到欢迎

python dataframe pandas

63
推荐指数
7
解决办法
12万
查看次数

熊猫:两个数据帧的差异

我需要逐行比较两个不同大小的数据帧并打印出不匹配的行.让我们采取以下两点:

df1 = DataFrame({
'Buyer': ['Carl', 'Carl', 'Carl'],
'Quantity': [18, 3, 5, ]})

df2 = DataFrame({
'Buyer': ['Carl', 'Mark', 'Carl', 'Carl'],
'Quantity': [2, 1, 18, 5]})
Run Code Online (Sandbox Code Playgroud)

什么是在df2上逐行排列并打印不在df1中的行的最有效方法,例如:

Buyer     Quantity 
Carl         2
Mark         1
Run Code Online (Sandbox Code Playgroud)

重要提示:我不想要排:

Buyer     Quantity 
Carl         3
Run Code Online (Sandbox Code Playgroud)

包含在差异中:

我已经尝试过: 逐行比较两个不同长度的数据帧,并为每行添加相同值的列, 并将两个Pandas数据帧中的输出差异并排显示 - 突出显示差异

但这些与我的问题不符.

谢谢

安迪

python diff dataframe pandas

39
推荐指数
5
解决办法
5万
查看次数

为熊猫设定差异

一个简单的熊猫问题:

是否有drop_duplicates()功能可以删除复制中涉及的每一行?

一个等效的问题如下:pandas对数据帧有不同的设置吗?

例如:

In [5]: df1 = pd.DataFrame({'col1':[1,2,3], 'col2':[2,3,4]})

In [6]: df2 = pd.DataFrame({'col1':[4,2,5], 'col2':[6,3,5]})

In [7]: df1
Out[7]: 
   col1  col2
0     1     2
1     2     3
2     3     4

In [8]: df2
Out[8]: 
   col1  col2
0     4     6
1     2     3
2     5     5
Run Code Online (Sandbox Code Playgroud)

所以也许df2.set_diff(df1)会产生这样的东西:

   col1  col2
0     4     6
2     5     5
Run Code Online (Sandbox Code Playgroud)

但是,我不想依赖索引,因为在我的情况下,我必须处理具有不同索引的数据帧.

顺便说一下,我最初考虑过当前drop_duplicates()方法的扩展,但现在我意识到使用集合论属性的第二种方法通常会更有用.但是,这两种方法都解决了我当前的问题

谢谢!

python dataframe pandas

38
推荐指数
5
解决办法
4万
查看次数

两个DataFrame(Python/Pandas)中每行和每列之间的差异

是否有更有效的方法将一个DF中每行的每列与另一个DF的每一行中的每一列进行比较?这对我来说很邋,,但我的循环/应用尝试要慢得多.

df1 = pd.DataFrame({'a': np.random.randn(1000),
                   'b': [1, 2] * 500,
                   'c': np.random.randn(1000)},
                   index=pd.date_range('1/1/2000', periods=1000))
df2 = pd.DataFrame({'a': np.random.randn(100),
                'b': [2, 1] * 50,
                'c': np.random.randn(100)},
               index=pd.date_range('1/1/2000', periods=100))
df1 = df1.reset_index()
df1['embarrassingHackInd'] = 0
df1.set_index('embarrassingHackInd', inplace=True)
df1.rename(columns={'index':'origIndex'}, inplace=True)
df1['df1Date'] = df1.origIndex.astype(np.int64) // 10**9
df1['df2Date'] = 0
df2 = df2.reset_index()
df2['embarrassingHackInd'] = 0
df2.set_index('embarrassingHackInd', inplace=True)
df2.rename(columns={'index':'origIndex'}, inplace=True)
df2['df2Date'] = df2.origIndex.astype(np.int64) // 10**9
df2['df1Date'] = 0
timeit df3 = abs(df1-df2)
Run Code Online (Sandbox Code Playgroud)

10个循环,最佳3:60.6 ms每个循环

我需要知道进行了哪种比较,因此将每个相反指数的丑陋添加到比较DF,以便它最终在最终DF中.

在此先感谢您的任何帮助.

python pandas

2
推荐指数
1
解决办法
1476
查看次数

标签 统计

pandas ×4

python ×4

dataframe ×3

diff ×1