将pandas dataframe列导入为字符串而不是int

Oli*_*ver 77 python pandas

我想将以下csv导入为字符串而不是int64.Pandas read_csv自动将其转换为int64,但我需要将此列作为字符串.

ID
00013007854817840016671868
00013007854817840016749251
00013007854817840016754630
00013007854817840016781876
00013007854817840017028824
00013007854817840017963235
00013007854817840018860166


df = read_csv('sample.csv')

df.ID
>>

0   -9223372036854775808
1   -9223372036854775808
2   -9223372036854775808
3   -9223372036854775808
4   -9223372036854775808
5   -9223372036854775808
6   -9223372036854775808
Name: ID
Run Code Online (Sandbox Code Playgroud)

不幸的是使用转换器会产生相同的结

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
Run Code Online (Sandbox Code Playgroud)

Wes*_*ney 118

只想重申这将在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
Run Code Online (Sandbox Code Playgroud)

我正在创建一个关于检测整数溢出的问题.

编辑:请参阅此处的解决方案:https://github.com/pydata/pandas/issues/2247

  • 看来,如果您希望将所有列都解释为字符串,可以执行以下操作:`dtype = str`. (8认同)
  • 同样的问题在这里。但我使用 keep_default_na = False 解决了我的问题。 (2认同)

spe*_*on2 18

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

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
Run Code Online (Sandbox Code Playgroud)

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


den*_*lov 13

从 pandas 1.0 开始,它变得更加简单。这会将列 'ID' 读取为 dtype 'string':

pd.read_csv('sample.csv',dtype={'ID':'string'})
Run Code Online (Sandbox Code Playgroud)

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