Pandas(Python)阅读和使用Java BigInteger/大数
我有一个带有散列值的数据文件(csv)。其中一些可能长达80个字符。我希望在Python中阅读它们,以便执行数据分析任务。有没有一种方法可以在不丢失信息的情况下导入python中的数据 编辑:我已经尝试了评论中建议的实现,但这对我不起作用。Pandas(Python)阅读和使用Java BigInteger/大数,python,numpy,pandas,biginteger,Python,Numpy,Pandas,Biginteger,我有一个带有散列值的数据文件(csv)。其中一些可能长达80个字符。我希望在Python中阅读它们,以便执行数据分析任务。有没有一种方法可以在不丢失信息的情况下导入python中的数据 编辑:我已经尝试了评论中建议的实现,但这对我不起作用。 csv文件中的示例数据是:772417562214417620288814020928171250177244473032121399816802171613168152184106从一个简单的文本文件开始读取,只有一个变量和一行 %more foo.txt
csv文件中的示例数据是:
772417562214417620288814020928171250177244473032121399816802171613168152184106
从一个简单的文本文件开始读取,只有一个变量和一行
%more foo.txt
x
77241756221441762028881402092817125017724447303212139981668021711613168152184106
In [268]: df=pd.read_csv('foo.txt')
Pandas将以字符串形式读取它,因为它太大,无法存储为核心编号类型,如int64或float64。但是信息在那里,你没有丢失任何东西
In [269]: df.x
Out[269]:
0 7724175622144176202888140209281712501772444730...
Name: x, dtype: object
In [270]: type(df.x[0])
Out[270]: str
您可以使用普通python将其视为一个数字。回想一下评论中链接中的注意事项,这不会像numpy和pandas中的东西那样快,因为在numpy和pandas中,您将整个列存储为int64。这是使用更灵活但速度较慢的对象模式来处理问题
您可以将列更改为存储为long(长整数),如下所示。(但请注意,dtype仍然是object,因为除了核心numpy类型(int32、int64、float64等)以外的所有类型都存储为object。)
然后可以或多或少地把它当作一个数字
In [272]: df.x * 2
Out[272]:
0 1544835124428835240577628041856342500354488946...
Name: x, dtype: object
你必须做一些格式化才能看到整数。或者选择numpy路径,默认显示整数
In [273]: df.x.values * 2
Out[273]: array([ 154483512442883524057762804185634250035448894606424279963336043423226336304368212L], dtype=object)
正如@JohnE在他的回答中所解释的,我们在使用熊猫阅读大数字时不会丢失任何信息。它们存储为
dtype=object
,要对它们进行数值计算,我们需要将这些数据转换为数值类型
对于系列:
我们必须将映射(func)
应用于数据帧中的序列:
df['columnName'].map(int)
df.applymap(int)
整个数据帧:
如果出于某种原因,我们的整个数据帧由dtype=object
的列组成,我们将查看applymap(func)
从熊猫的文献中:
DataFrame.applymap(func):将一个函数应用于一个数据帧,该数据帧旨在进行元素操作,例如,为数据帧中的每个系列执行映射(func,series)
因此,要转换dataframe中的所有列:
df['columnName'].map(int)
df.applymap(int)
这可能会有帮助:或者这一条:@JohnE谢谢你指出其他方法,但不幸的是,这对我不起作用。我更新了我的问题来描述我目前的问题。是的,没错。我看到你试图把它作为一个编辑来做(在我看来这很好,尽管它被拒绝了)。谢谢你的澄清,很高兴你解决了它。@JohnE我不想要一个单独的答案,因为我的答案是建立在你的基础上的。在我看来,添加新答案似乎不符合逻辑,不过,感谢您解释解决方案的方法!