pandas 将panda Dataframe 列作为字符串而不是整数导入

wfypjpf4  于 2022-11-20  发布在  其他
关注(0)|答案(3)|浏览(173)

我想导入下面的csv作为字符串而不是作为int64。Pandas read_csv自动将其转换为int64,但我需要此列作为字符串。
第一个
不幸的是,使用转换器也会产生相同的结果。

df = read_csv('sample.csv', converters={'ID': str})
df.ID
>>

0   -9223372036854775808
1   -9223372036854775808
2   -9223372036854775808
3   -9223372036854775808
4   -9223372036854775808
5   -9223372036854775808
6   -9223372036854775808
Name: ID
brqmpdu1

brqmpdu11#

只是想重申一下,这将工作在Pandas〉= 0.9.1:

In [2]: read_csv('sample.csv', dtype={'ID': object})
Out[2]: 
                           ID
0  00013007854817840016671868
1  00013007854817840016749251
2  00013007854817840016754630
3  00013007854817840016781876
4  00013007854817840017028824
5  00013007854817840017963235
6  00013007854817840018860166

我还创建了一个关于检测整数溢出的问题。
编辑:请在此处查看解决方案:https://github.com/pydata/pandas/issues/2247
帮助他人时更新:
要将all columns作为str,可以这样做(从注解中):

pd.read_csv('sample.csv', dtype = str)

要将most列或选择性列作为str,可以执行以下操作:

# lst of column names which needs to be string
lst_str_cols = ['prefix', 'serial']
# use dictionary comprehension to make dict of dtypes
dict_dtypes = {x : 'str'  for x in lst_str_cols}
# use dict on dtypes
pd.read_csv('sample.csv', dtype=dict_dtypes)
o7jaxewo

o7jaxewo2#

这可能不是最优雅的方式,但它完成了工作。

In[1]: import numpy as np

In[2]: import pandas as pd

In[3]: df = pd.DataFrame(np.genfromtxt('/Users/spencerlyon2/Desktop/test.csv', dtype=str)[1:], columns=['ID'])

In[4]: df
Out[4]: 
                       ID
0  00013007854817840016671868
1  00013007854817840016749251
2  00013007854817840016754630
3  00013007854817840016781876
4  00013007854817840017028824
5  00013007854817840017963235
6  00013007854817840018860166

只需将'/Users/spencerlyon2/Desktop/test.csv'替换为文件的路径即可

wgx48brx

wgx48brx3#

从Pandas1.0开始,它变得更加简单了。这将把列'ID'读为dtype 'string':

pd.read_csv('sample.csv',dtype={'ID':'string'})

正如我们在本入门指南中所看到的,已经引入了'string' dtype(在字符串被视为dtype 'object'之前)。

相关问题