2013-04-09 90 views
1

我無法加入DataFrame1與DataFrame2,我懷疑這是由於其中一個有一個int64索引,另一個有一個字符串索引。如何將字符串索引轉換爲int64(如果這確實是問題)?如果不是,我該如何合併這兩個數據幀?如何加入這兩個熊貓數據框?

DataFrame1

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 9943 entries, 10029934 to 9962359 
Data columns: 
face_area  9943 non-null values 
image_area 9943 non-null values 
ratio   9943 non-null values 
dtypes: int64(3) 

DataFrame2

<class 'pandas.core.frame.DataFrame'> 
Index: 9412 entries, 10029934 to 9962359 
Data columns: 
1  9412 non-null values 
2  9412 non-null values 
name  9412 non-null values 
class 9412 non-null values 
dtypes: float64(2), int64(1), object(1) 
+1

那你嘗試和結果是什麼?另外,指數中實際值的性質是什麼?第二個只有第一個字符串版本的索引,還是完全不同? – BrenBarn 2013-04-09 06:44:07

+0

如果您提供了帶有相應類型的小樣本'DataFrame'並添加了請求的輸出,我會更容易。 – root 2013-04-09 06:46:24

+0

@BrenBam剛發現一個解決方案,如果你好奇,下面貼出來。 – jason 2013-04-09 06:48:27

回答

1
DataFrame2['id'] = DataFrame2.index.map(int) 
DataFrame2.set_index('id') 

這似乎已經解決了這個問題,我現在能加入。如果你有更優雅的解決方案,Id仍然喜歡聽。

1

你可以使用astype

df.index = df.index.astype(int) 

例子:

In [1]: df1 = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b']) 

In [2]: df2 = pd.DataFrame([[1, 2], [3, 4]], columns=['c', 'd'], index=['0','1']) 

In [3]: df2.index = df2.index.astype(int) 

In [4]: df1.join(df2) 
Out[4]: 
    a b c d 
0 1 2 1 2 
1 3 4 3 4