如何解决我如何通过使用 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 举报,一经查实,本站将立刻删除。