【发布时间】:2019-11-25 20:12:45
【问题描述】:
- 我正在使用
pandas.read_gbq从 google bigquery 读取表格。我面临的问题是pandas自动推断每列的数据类型,这是造成问题。 - 例如,在表中我有一个列名
aspect_ratio,pandas 会自动将所有值转换为我想要阻止的浮点数。
source df expected
55 55.0 55
25 25.0 25
21 21.0 21
nan nan nan
22 22.0 22
22.5 22.5 22.5
- 我需要在这里没有浮点的精确表示。 我想要源列的字符串表示形式。
- 我尝试了以下解决方案,但它不起作用。
df['col'].astype(str) # this will just change 55.0 to '55.0'
df['col'].astype(int) # this will also wont work since it will raise error for 22.5
- 我已检查 documentation 中的
pandas.read_gbq,但在这种情况下找不到任何可以提供帮助的信息。 - 我还想知道我可以在 python 中使用的任何其他选项,不仅限于
pandas。
【问题讨论】:
-
@Ben.T 我已经更新了这个问题,希望现在更清楚,你会明白为什么 astype('Int') 或 astype('str') 类型的解决方案不起作用。
-
查看文档后,您似乎无法针对
read_gbq做任何专门的事情。我的建议是将其转换为字符串,然后在s[-2:] == '.0'的情况下进行另一个修剪字符串的转换 -
@rtenha 对于
22.5的情况,该破解将失败。应该是22.5而不是22.0。 -
什么意思?如果字符串的最后两个字符是
.0,它只会修改字符串,对于22.5,这将是错误的
标签: python pandas google-bigquery