蟒蛇;当int太大时如何将字符串转换为int?

时间:2020-09-24 09:23:03

标签: python pandas dataframe integer

我有一个熊猫系列,其中每一列都是“对象”,我想将其中的一些转换成整数。它不适用于数字太大的列,出现错误“整数太大而无法转换”。

我已经在网络和论坛上进行了搜索,但是我不理解各种答案,我对Python还是很陌生。我知道我的“数字”太长了……我不明白为什么Python会有这个问题……例如,将数据帧导出到excel文件中就可以了,然后我就可以不用任何数据透视表了问题(excel将数字识别为整数),但我真的希望能够在Python中做到这一点...

此处是代码

ex_numb = 2461401487610497195867
np.uint64(ex_numb)

---------------------------------------------------------------------------
OverflowError                             Traceback (most recent call last)
<ipython-input-109-e8c58111a107> in <module>
      1 ex_numb = 2461401487610497195867
----> 2 np.uint64(ex_numb)

OverflowError: int too big to convert


导入系统 sys.maxsize

9223372036854775807

2 个答案:

答案 0 :(得分:0)

似乎使用np.uint是个问题,因为它最多只能处理64位,您可以改用np.int

import numpy as np
ex_numb = 2461401487610497195867
ex_np = np.int(ex_numb)
ex_np.bit_length()

哪个输出:

72

要在熊猫中使用它,可以将其作为numpy数组传递:

pd.DataFrame(np.array([[ex_numb]]))

答案 1 :(得分:0)

我认为使用以下代码可以更清楚地了解我的问题:

import pandas as pd

data = {'value':  ['156155486292071842853', '156155486292071842855','156155486292071842854'],
        'unit': ['CDC', 'OAB','BK'],
        'decim_value' : ['18','0','6']
        }

df = pd.DataFrame (data, columns = ['value','unit','decim_value'])
print (df)
df.info()

from functools import partial
df.apply(partial(pd.to_numeric, errors='ignore')).info() 

它不会转换我的“值”!

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
 #   Column       Non-Null Count  Dtype 
---  ------       --------------  ----- 
 0   value        3 non-null      object
 1   unit         3 non-null      object
 2   decim_value  3 non-null      int64 
dtypes: int64(1), object(2)
memory usage: 200.0+ bytes