通过 Pandas + Gspread 将长数字 ID 转换为 Scientific
Long number IDs converted to Scientific by Pandas + Gspread
我在使用 GSpread 从 Google 表格中检索数据并将其与使用 Tweepy 从 Twitter 填充的 Pandas DF 进行比较时遇到数字格式问题。
基本上,当我从 Twitter 接收数据时,我有一些长数字,即推文 ID,例如:
- 1339190735581679616
- 1339190521957408768
- 1338941347122831361
当我第一次填充我的 Google 工作表(使用 set_with_dataframe)时,id 写得很好,但是当我将这些数据从工作表返回到 df 时(使用 get_as_dataframe) ,它将 ids 格式更改为显然是科学的格式。上面的数字最终像:
- 1.3391907355816796e+18
- 1.3391905219574088e+18
- 1.338941347122831e+18
如您所想,这使我无法拥有唯一 ID,因为这些数字是四舍五入的。所以我无法将来自 Twitter 的数据与来自 Google 表格的数据进行比较。我尝试在 Google 表格中更改样式,但没有帮助,并且在 Pandas 方面找不到任何参考。看起来数据来自“get_as_dataframe”这个科学记数法。
关于如何解决这个问题的任何想法?
我对 ID 号的建议是将它们转换为字符串并在整个过程中保持这种状态。除非期望它们进行数值转换,否则没有理由将它们保留为数字类型。
gspread-dataframe中的方法get_as_dataframe
支持的数据类型:
dtypeType name or dict of column -> type, optional
Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’} Use str or object together with suitable na_values settings to preserve and not interpret dtype. If converters are specified, they will be applied INSTEAD of dtype conversion.
来自 https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html,由 gspread-dataframe 文档暗示:
The get_as_dataframe function supports the keyword arguments that are supported by your Pandas version’s text parsing readers, such as pandas.read_csv.
我在使用 GSpread 从 Google 表格中检索数据并将其与使用 Tweepy 从 Twitter 填充的 Pandas DF 进行比较时遇到数字格式问题。
基本上,当我从 Twitter 接收数据时,我有一些长数字,即推文 ID,例如:
- 1339190735581679616
- 1339190521957408768
- 1338941347122831361
当我第一次填充我的 Google 工作表(使用 set_with_dataframe)时,id 写得很好,但是当我将这些数据从工作表返回到 df 时(使用 get_as_dataframe) ,它将 ids 格式更改为显然是科学的格式。上面的数字最终像:
- 1.3391907355816796e+18
- 1.3391905219574088e+18
- 1.338941347122831e+18
如您所想,这使我无法拥有唯一 ID,因为这些数字是四舍五入的。所以我无法将来自 Twitter 的数据与来自 Google 表格的数据进行比较。我尝试在 Google 表格中更改样式,但没有帮助,并且在 Pandas 方面找不到任何参考。看起来数据来自“get_as_dataframe”这个科学记数法。
关于如何解决这个问题的任何想法?
我对 ID 号的建议是将它们转换为字符串并在整个过程中保持这种状态。除非期望它们进行数值转换,否则没有理由将它们保留为数字类型。
gspread-dataframe中的方法get_as_dataframe
支持的数据类型:
dtypeType name or dict of column -> type, optional Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’} Use str or object together with suitable na_values settings to preserve and not interpret dtype. If converters are specified, they will be applied INSTEAD of dtype conversion.
来自 https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html,由 gspread-dataframe 文档暗示:
The get_as_dataframe function supports the keyword arguments that are supported by your Pandas version’s text parsing readers, such as pandas.read_csv.