我合并的两个表都有正确格式的单元格,都是数字,但是当我进行左连接时,其中一个原始表中的数字被打乱了格式(您可以看到这些数字中有e+)。我应该怎么做才能看到这些数字不完整?
yvt65v4c1#
问题:合并时,出现在df1中的某些SKU值未出现在df2中。为了表示不可用的值,panda自动使用NaN,这是一个浮点值。因此,整数ISBN将转换为浮点值。给定ISBN的大小,panda然后以科学记数法格式化这些浮点值。您可以通过定义自己的浮点值格式化程序(pd.options.display.float_format)来解决这个问题,但是在您的情况下,在合并之前将ISBN转换为字符串可能更容易/更有效。示例:
NaN
pd.options.display.float_format
>>> import pandas as pd >>> df1 = pd.DataFrame({"SKU": list("abcde"), "ISBN": list(range(1, 6))}) >>> df2 = pd.DataFrame({"SKU": list("bcef"), "ISBN": list(range(4, 8))})
您的问题:
>>> pd.merge(df1, df2, on="SKU", how="left") SKU ISBN_x ISBN_y 0 a 1 NaN 1 b 2 4.0 2 c 3 5.0 3 d 4 NaN 4 e 5 6.0 >>> _.dtypes SKU object ISBN_x int64 ISBN_y float64 # <<< Problematic
与可能的解决方案:
>>> pd.merge(df1.astype(str), df2.astype(str), on="SKU", how="left") SKU ISBN_x ISBN_y 0 a 1 NaN 1 b 2 4 2 c 3 5 3 d 4 NaN 4 e 5 6 >>> _.dtypes SKU object ISBN_x object ISBN_y object
1条答案
按热度按时间yvt65v4c1#
问题:合并时,出现在df1中的某些SKU值未出现在df2中。为了表示不可用的值,panda自动使用
NaN
,这是一个浮点值。因此,整数ISBN将转换为浮点值。给定ISBN的大小,panda然后以科学记数法格式化这些浮点值。您可以通过定义自己的浮点值格式化程序(
pd.options.display.float_format
)来解决这个问题,但是在您的情况下,在合并之前将ISBN转换为字符串可能更容易/更有效。示例:
您的问题:
与可能的解决方案: