番号

2016-05-10 26 views
0

私は、次のファイルを持っている:私はこのファイルからパンダDFを作成するには、文字列またはUnicodeインデックス列として列契約を使用したい番号

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 

を。数字のように見えますが、技術的には文字列です。

私はこれでした: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') 

強制的に文字列インデックスにすることはできますか?

答えて

1

あなたが​​代わりのindex_colを使用する場合、インデックスは、文字列が含まれます:それはTHXを^^作品

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 
+0

を。 1つのコマンドラインでこれを行う方法はありますか?それとも絶対に2つのステップで行う必要がありますか? – Steven

+1

もちろん、1行で書くこともできます: 'df = pd.read_csv( 'data'、dtype = object、encoding = 'utf-8')。set_index( 'Contract')'。 – unutbu