微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何通过使用 pandas

如何解决我如何通过使用 pandas

下面是我的两个数据框,我正在尝试比较它们。我只想将两个数据帧的第一行视为相同,因为这些值要么是 none,要么是 na 或空白。 我怎样才能避免它们而没有任何错误

政策编号 限制数量 免赔额 Terr_code 再保险
1234 NaN NaN
1234 5 5 Y Y
1234 20000 30000 Y Y

第二个数据框:

政策编号 限制数量 免赔额 Terr_code 再保险
1234 0 0
1234 5 5 Y Y
1234 20000 30000 Y Y

解决方法

NOTE: 使用 iloc[1:] 删除 1st row

如果您需要测试 df 是否相等:

df1.iloc[1].equals(df2.iloc[1]) # prints True

或者如果您想比较每个值:

df1.iloc[1:].compare(df2.iloc[1:],keep_shape = True,keep_equal = True)
,

在比较 2 个数据帧之前,您可以将所有这些类型的空值转换为相同的值,例如 unique

要转换,我们可以定义一个用于转换/翻译的字典,然后使用 NaN 转换两个数据帧。

最后,我们将 2 个数据帧(转换后)与 .compare()

进行比较
.replace

这里,我们定义了用于转换的字典来转换以下所有类型的空值。您可以随意添加或删除条目:

import numpy as np

# define the null values conversion dict
same_dict = {'': np.nan,0: np.nan,'0': np.nan,None: np.nan,'None': np.nan,'NaN': np.nan,'nan': np.nan}

# apply the conversion to the 2 dataframes.  
df1r = df1.replace(same_dict,regex=True)
df2r = df2.replace(same_dict,regex=True)

# compare the 2 dataframes (after convesions)
# Either use compare option that shows differences only
df1r.compare(df2r)

# Or use compare option that keeps all similarities and differences for detailed checking:

df1r.compare(df2r,keep_shape=True,keep_equal=True)

结果:

''        empty string
0         zero (numeric type)
'0'       zero (character type) 
None      None
'None'    String of None
'NaN'     String of NaN
'nan'     String of nan (appears when converting NaN to string)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?