おそらく を探しているでしょう。pivot_table
これは の逆のようなものですmelt
。簡単にするために、次のコードは、時間の四半期を表す 96 個の整数値を含む「Uhrzeit」列で入力 DataFrame を再作成します。
import pandas as pd
import numpy as np
data = {
'Datum': ['2014-12-01'] * 96 + ['2014-12-02'] * 96,
'Uhrzeit': range(96) + range(96),
'RZS': np.random.rand(96*2),
}
df = pd.DataFrame(data).set_index('Datum')[['Uhrzeit', 'RZS']]
df.reset_index(inplace=True) # Now this df looks like the input you described
df = pd.pivot_table(df, values='RZS', rows='Uhrzeit', cols='Datum')
print df[:10]
出力:
Datum 2014-12-01 2014-12-02
Uhrzeit
0 0.864674 0.363400
1 0.736678 0.925202
2 0.807088 0.076891
3 0.007031 0.528020
4 0.047997 0.216422
5 0.625339 0.636028
6 0.115018 0.141142
7 0.424289 0.101075
8 0.544412 0.147669
9 0.151214 0.274959
次に、目的の「Uhrzeit」を含む DataFrame を切り出すことができます。
編集:列RZS
は文字列として表されているようです。これによりpivot_table
、値列が数値であると予想されるため、問題が発生します。'1.087,29'
strを float と見なす必要があると仮定して、その列を数値に変換するための簡単な修正を次に示します1087.29
。
df = pd.DataFrame({'RZS': ['1.087,29', '1.087.087,28', '1.087.087.087,28']})
def fix(x):
return x.replace('.', '').replace(',', '.')
df['RZS'] = df['RZS'].apply(fix).astype(float)
# The column RZS now should be of dtype float, and pivot_table should work.