、パンダの列を複数の列に分割する方法は?私はパンダのデータフレームでこのデータを持っている
name date close quantity daily_cumm_returns
0 AARTIIND 2000-01-03 3.84 21885.82 0.000000
1 AARTIIND 2000-01-04 3.60 56645.64 -0.062500
2 AARTIIND 2000-01-05 3.52 24460.62 -0.083333
3 AARTIIND 2000-01-06 3.58 42484.24 -0.067708
4 AARTIIND 2000-01-07 3.42 16736.21 -0.109375
5 AARTIIND 2000-01-10 3.42 20598.42 -0.109375
6 AARTIIND 2000-01-11 3.41 20598.42 -0.111979
7 AARTIIND 2000-01-12 3.27 100417.29 -0.148438
8 AARTIIND 2000-01-13 3.43 20598.42 -0.106771
9 AARTIIND 2000-01-14 3.60 5149.61 -0.062500
10 AARTIIND 2000-01-17 3.46 14161.42 -0.098958
11 AARTIIND 2000-01-18 3.50 136464.53 -0.088542
12 AARTIIND 2000-01-19 3.52 21885.82 -0.083333
13 AARTIIND 2000-01-20 3.73 75956.66 -0.028646
14 AARTIIND 2000-01-21 3.84 77244.07 0.000000
15 AARTIIND 2000-02-01 4.21 90118.08 0.000000
16 AARTIIND 2000-02-02 4.52 238169.21 0.073634
17 AARTIIND 2000-02-03 4.38 163499.94 0.040380
18 AARTIIND 2000-02-04 4.44 108141.71 0.054632
19 AARTIIND 2000-02-07 4.26 68232.27 0.011876
20 AARTIIND 2000-02-08 4.00 108141.71 -0.049881
21 AARTIIND 2000-02-09 3.96 32185.04 -0.059382
22 AARTIIND 2000-02-10 4.13 43771.63 -0.019002
23 AARTIIND 2000-02-11 3.96 3862.20 -0.059382
24 AARTIIND 2000-02-14 3.94 12874.01 -0.064133
25 AARTIIND 2000-02-15 3.90 33472.42 -0.073634
26 AARTIIND 2000-02-16 3.90 25748.02 -0.073634
27 AARTIIND 2000-02-17 3.90 60507.86 -0.073634
28 AARTIIND 2000-02-18 4.22 45059.04 0.002375
29 AARTIIND 2000-02-21 4.42 81106.27 0.049881
は、私はすべてのヶ月のデータを選択して、例えばのための新しい行、 にその転置したいです最初の15行は、名前AARTIINDと日付2000年1月3日一列になるべきであり、次いで15のカラム毎日cummulativeリターンを有します。グループへ
name date first second third fourth fifth .... fifteenth
0 AARTIIND 2000-01-03 0.00 -0.062 -0.083 -0.067 -0.109 .... 0.00
データ月賢い私が使用しています、以下のコードを使用して行を個別に設定する
group = df.groupby([pd.Grouper(freq='1M', key='date'), 'name'])
は非常に遅く、私のデータセットを1万行
data = pd.DataFrame(columns = ('name', 'date', 'daily_zscore_1', 'daily_zscore_2', 'daily_zscore_3', 'daily_zscore_4', 'daily_zscore_5', 'daily_zscore_6', 'daily_zscore_7', 'daily_zscore_8', 'daily_zscore_9', 'daily_zscore_10', 'daily_zscore_11', 'daily_zscore_12', 'daily_zscore_13', 'daily_zscore_14', 'daily_zscore_15'))
data.loc[0] = [x['name'].iloc[0], x['date'].iloc[0]].extend(x['daily_cumm_returns'])
を持っていますこれを達成するための他のより速い方法があります。これは、これがちょうど1つの列を転置することであり、したがって非常に高速でなければならないことがわかります。私はピボットを溶かして溶かしましたが、この状況でそれらを使う方法を理解していません。
だけ私はこれに行った変更は、data.groupby([「first_month_date」、「名前」])[「インデックス」]を使用していた。ランク(方法=「最初」)より速く、いくつかのためだった日のランクを追加します理由。 –
よろしくお願いいたします。そのgroupbyは、あなたが 'index'カラムを持っていなければ動作しないように見えます。 また、私は一つのラインでジャンクの真ん中の3行を置き換えます。 私はまだ、どのように使用するのか分かりませんが、私はまだそれを使用する方法がわかりません。(df ['first_month_date'] = df.assign(index_col = df.index).resample( 'M')['index_col']。インデックスは 'resample'を持つ集約カラムとして扱いますが、' assign'を使ってそれを強制的に動作させます。 –
ええ、単純にdf.reset_index()を実行するだけで、インデックスを作成しました。デフォルトでは現在のインデックスがカラムになり、終了したらカラムを削除します。しかし、ハッキー。私は、これを行わずにインデックスをカラムとして使用する方法がなければならないと確信しています。 –