pandas 如何设置联接表中单元格的格式?

1l5u6lss  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(139)

我合并的两个表都有正确格式的单元格,都是数字,但是当我进行左连接时,其中一个原始表中的数字被打乱了格式(您可以看到这些数字中有e+)。我应该怎么做才能看到这些数字不完整?

yvt65v4c

yvt65v4c1#

问题:合并时,出现在df1中的某些SKU值未出现在df2中。为了表示不可用的值,panda自动使用NaN,这是一个浮点值。因此,整数ISBN将转换为浮点值。给定ISBN的大小,panda然后以科学记数法格式化这些浮点值。
您可以通过定义自己的浮点值格式化程序(pd.options.display.float_format)来解决这个问题,但是在您的情况下,在合并之前将ISBN转换为字符串可能更容易/更有效。
示例:

>>> 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

相关问题