我有以下文件:
Contract, FG
9896342,Y
11037874,Y
6912529,Y
9896652,N
363291,Y
7348524,Y
6078482,Y
7795457,N
2486242,Y
3297980,Y
9760560,Y
1200533,N
11033963,N
7861603,Y
8218268,Y
9760247,Y
我想从这个文件创建一个pandas DF,并使用Column作为字符串或unicode索引列。它看起来像数字,但从技术上讲,它是一个字符串。
我这样做了:DF = pd.read_csv('C:\\Users\\S.Benet\\Desktop\\test.txt', index_col='Contract', dtype=object, encoding = 'utf-8')
但索引被解释为INT。
>>DF.index
Int64Index([ 9896342, 11037874, 6912529, 9896652, 363291, 7348524,
6078482, 7795457, 2486242, 3297980, 9760560, 1200533,
11033963, 7861603, 8218268, 9760247],
dtype='int64', name=u'Contract')
如何强制它成为字符串索引?
答案 0 :(得分:1)
如果您使用set_index
代替index_col
,则索引将包含字符串:
df = pd.read_csv('data', dtype=object, encoding='utf-8')
df = df.set_index('Contract')
或等同地
df = pd.read_csv('data', dtype=object, encoding='utf-8').set_index('Contract')
In [154]: df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 16 entries, 9896342 to 9760247 # <-- a generic Index, not a Int64Index
Data columns (total 1 columns):
FG 16 non-null object
dtypes: object(1)
memory usage: 256.0+ bytes
In [155]: df.index[0]
Out[155]: '9896342'
In [156]: type(df.index[0])
Out[156]: str