2016-07-05 30 views
1

問題があります。私は別のものから新しいデータフレームを作成したい。重複する行を避けたいつまり、同じメールがある場合は、上部と下部を並べて連結する必要があります。しかし、問題は毎回価値インデックス作成エラーが発生していることです。Pandas Dataframesを並行して並べて並び替えます。

pandas.indexes.base.InvalidIndexError: Reindexing only valid with uniquely valued Index objects 

そして、ここで私がやったことです:

if not self.data.empty: 
    if data_frame_['Email'][0] in self.data['Email'].get_values(): 
     self.data = pd.concat([self.data, data_frame_], axis=1) 
    else: 
     self.data = pd.concat([self.data,data_frame_], axis=0) 
else: 
    self.data = data_frame_.copy() 

end = time.time() 

data_frame_は、私が(data_frame_である)データの

data_frame_['Email'][0] 

Exempleを使用していますなぜこれがあるだけで1行があります。

Email      Project1 Target1 Projetc2 Target2 
------------------------------------------------------------- 
[email protected]    1  5000  NaN  NaN 
[email protected]     7  5000  NaN  NaN 
[email protected]    7  4000  NaN  NaN 

私が望むものは:

Email      Project1 Target1 Projetc2 Target2 
------------------------------------------------------------- 
[email protected]    1  5000  7  4000 
[email protected]    7  5000  NaN  NaN 

Ps:私はdictsを使用してコードの整合性を保護することができますが、私はデータフレームを使用したいと思います。

ありがとうございます。

答えて

1

あなたはpivot_tableを使用していますが、最初のcumcountでグループを作成することができます:それは魔法のようなものだ

#rename columns 
df.rename(columns={'Project1':'Project','Target1':'Target'}, inplace=True) 

print (df) 
     Email    Project Target 
0 [email protected]    1 5000 
1 [email protected]    7 5000 
2 [email protected]    7 4000 

df['g'] = (df.groupby('Email').cumcount() + 1).astype(str) 

df1 = df.pivot_table(index='Email', columns='g', values=['Project', 'Target']) 
#Sort multiindex in columns 
df1 = df1.sort_index(axis=1, level=1) 
#'reset' multiindex in columns 
df1.columns = [''.join(col) for col in df1.columns] 
print (df1) 
        Project1 Target1 Project2 Target2 
Email              
[email protected]    7.0 5000.0  NaN  NaN 
[email protected]    1.0 5000.0  7.0 4000.0 
+0

!それはスーパーに動作します、ありがとうございます。 –

+0

うれしいことができますよ!がんばろう!受け入れてくれてありがとう! – jezrael

+0

私はそれを認識しませんでした(私のデータフレームに約100列があるため)、私はpivot_tableを使っているときに列がありません。私は3列を失っている。 2つは '2016-07-29'のような日付値で、3つ目は文字列です。なぜ、あなたはアイデアを持っていますか?ありがとうございました。 –

関連する問題