我有一個devilishly困難的時間搞清楚如何採取與N行,一個系列與N行,另一個系列與N行,並加入它全部一起。下面是我在做什麼(錯誤):熊貓 - 如何控制列順序追加到數據框
print df['Survived'].shape # Series should be 1st column
print pd.Series(kmeans.labels_).shape # Series should be 2nd column
print pd.DataFrame(X_pca).shape # DataFrame should be remaining columns
new_df = pd.DataFrame()
new_df['Survived'] = df['Survived']
new_df['ClusterId'] = pd.Series(kmeans.labels_)
new_df = new_df.append(pd.DataFrame(X_pca))
print new_df.shape
print new_df.columns.values
,輸出是:
(1309,)
(1309,)
(1309, 9)
(2618, 11)
[0L 1L 2L 3L 4L 5L 6L 7L 8L 'ClusterId' 'Survived']
兩件事情我不明白:
- 列的順序是所有錯誤。我試着從DataFrame開始,然後附加'ClusterId'系列,然後是'Survived'系列,但是生成的DataFrame的列順序完全相同。
- 附加與DataFrame.append數據幀後,產生的數據幀的行數增加了一倍
我試着閱讀文檔,但我有一個非常艱難的時期發現任何東西覆蓋正是我試圖去做(這似乎並不是一件不尋常的事情)。我也嘗試pd.concat([Series, Series, DataFrame], axis=1)
而是拋出一個錯誤:pandas.core.index.InvalidIndexError: Reindexing only valid with uniquely valued Index objects
如果你給什麼樣的實際系列和DataFrames看起來像一些想法這將有助於。從您嘗試到'pd.concat'的錯誤中,我懷疑一個或多個Series/DataFrame的索引與其他索引不匹配。索引很重要!另外,'append'自然會追加* rows *而不是列,fyi。 – Ajean 2014-09-05 22:47:43
讓我們假裝我沒有索引的概念,我只是把它想成原始數據。我從一個DataFrame中的數據集開始。我將很多列轉換爲更少的列,並使用新列計算一個集羣ID。所以我有一列希望與原始數據幀保持一致,並且我希望創建新的羣集ID列,並對新的縮減列集進行轉換。他們都排列在正確的順序(我想這是指數的因素在哪裏?我真的不在乎,他們都在正確的順序,我只是想合併它們 – 2014-09-05 22:52:39
它看起來好像使用'ignore_index = True'將會是一個解決方案(使用concat()),但是錯誤依然存在。 – 2014-09-05 23:06:51