2017-12-05 1 views
2

ich Pandas Datenrahmen haben (unglücklicherweise mit Dubletten ...)Pandas umformen Spalten zu Zeitreihen Reihen

Date  Partner Value 
2017-02-01 Partner1 150 
2017-03-01 Partner1 170 
2017-02-01 Partner2 160 
2017-03-01 Partner2 185 
2017-02-01 Partner1 40 
2017-03-01 Partner1 90 

Was ich von den Partnern neu zu gestalten wollen, wie folgt aussehen:

Partner 2017-02-01 2017-03-01 
Partner1 150   170 
Partner2 160   185 
Partner1 40   90 

Wie würde ich darüber gehen?

Antwort

2

Eigentlich fand ich die Antwort, die ich brauchte:

series = pd.pivot_table(data, values="Value", index="Partner", columns="Date") 
1

Hier ist eine alternative Lösung:

Quelle DF:

In [143]: df 
Out[143]: 
     Date Partner Value 
0 2017-02-01 Partner1 150 
1 2017-02-01 Partner1 199 # NOTE: duplicated `Date` & `Partner` 
2 2017-03-01 Partner1 170 
3 2017-02-01 Partner2 160 
4 2017-03-01 Partner2 185 

Lösung:

In [144]: df.groupby(['Partner','Date'])['Value'].mean().unstack().rename_axis(None).rename_axis(None, 1) 
Out[144]: 
      2017-02-01 2017-03-01 
Partner1  174.5  170.0 
Partner2  160.0  185.0 
+0

Dies tut funktioniert nicht, da 'Index duplica enthält Die Einträge können nicht umgestaltet werden. – Laurent

+0

@Laurent, könnten Sie einen reproduzierbaren Datensatz bereitstellen? – MaxU

+0

Nein, das kann ich aus geschäftlichen Gründen nicht tun, aber das Problem war, dass einige der "Partner" -Namen Duplikate waren und Ihre alternative Lösung fehlschlug. Die Verwendung Ihrer Methode auf einer Deduplizierte Tabelle funktionierte perfekt. Die pivot_table wurde jedoch nicht belästigt. – Laurent