私は列= ['date'、 'id'、 'value']のDataFrameを持っています。私たちはn個の製品を持っていると仮定します。私はcolumns = ['date'、 'valueid1' ..、 'valueidn']という新しいデータフレームを作成しようとしています。値が対応する日付行に割り当てられている場合、NaNは値として割り当てられますしないでください。多くのおかげでpandasグループ日付で、値を列に割り当てます。
2
A
答えて
3
次のDF持っていると仮定すると:
In [120]: df
Out[120]:
date id value
0 2001-01-01 1 10
1 2001-01-01 2 11
2 2001-01-01 3 12
3 2001-01-02 3 20
4 2001-01-03 1 20
5 2001-01-04 2 30
あなたが使用することができpivot_table()方法:
In [121]: df.pivot_table(index='date', columns='id', values='value')
Out[121]:
id 1 2 3
date
2001-01-01 10.0 11.0 12.0
2001-01-02 NaN NaN 20.0
2001-01-03 20.0 NaN NaN
2001-01-04 NaN 30.0 NaN
または
In [122]: df.pivot_table(index='date', columns='id', values='value', fill_value=0)
Out[122]:
id 1 2 3
date
2001-01-01 10 11 12
2001-01-02 0 0 20
2001-01-03 20 0 0
2001-01-04 0 30 0
1
は、私はあなたがpivot
が必要だと思う:
df = df.pivot(index='date', columns='id', values='value')
はサンプル:
df = pd.DataFrame({'date':pd.date_range('2017-01-01', periods=5),
'id':[4,5,6,4,5],
'value':[7,8,9,1,2]})
print (df)
date id value
0 2017-01-01 4 7
1 2017-01-02 5 8
2 2017-01-03 6 9
3 2017-01-04 4 1
4 2017-01-05 5 2
df = df.pivot(index='date', columns='id', values='value')
#alternative solution
#df = df.set_index(['date','id'])['value'].unstack()
print (df)
id 4 5 6
date
2017-01-01 7.0 NaN NaN
2017-01-02 NaN 8.0 NaN
2017-01-03 NaN NaN 9.0
2017-01-04 1.0 NaN NaN
2017-01-05 NaN 2.0 NaN
が、取得した場合:
ValueError: Index contains duplicate entries, cannot reshape
はmean
、sum
、のような機能を集約する必要が使用することです。 .. groupby
またはpivot_table
:
df = pd.DataFrame({'date':['2017-01-01', '2017-01-02',
'2017-01-03','2017-01-05','2017-01-05'],
'id':[4,5,6,4,4],
'value':[7,8,9,1,2]})
df.date = pd.to_datetime(df.date)
print (df)
date id value
0 2017-01-01 4 7
1 2017-01-02 5 8
2 2017-01-03 6 9
3 2017-01-05 4 1 <- duplicity 2017-01-05 4
4 2017-01-05 4 2 <- duplicity 2017-01-05 4
df = df.groupby(['date', 'id'])['value'].mean().unstack()
#alternative solution (another answer same as groupby only slowier in big df)
#df = df.pivot_table(index='date', columns='id', values='value', aggfunc='mean')
print (df)
id 4 5 6
date
2017-01-01 7.0 NaN NaN
2017-01-02 NaN 8.0 NaN
2017-01-03 NaN NaN 9.0
2017-01-05 1.5 NaN NaN <- 1.5 is mean (1 + 2)/2
関連する問題
- 1. SQL数値を日付に割り当て、値でグループ化します
- 2. getElementByIdの値を日付に割り当てますか?
- 3. 変数に最大日付の値を割り当てます
- 4. DateFieldに日付を割り当てる
- 5. Pandas DataFrame - 他の列に基づいて1,0の値を割り当てます
- 6. 入力フィールドの配列に日付ピッカーを割り当てる
- 7. 文字列照合とPandasのブール値再割り当て
- 8. Excel - 日付範囲に基づいてvlookup値を割り当てます。
- 9. パンダの日付の割り当て
- 10. xcode/swiftで値の割り当てを割り当てます。
- 11. pandas DataFrameでフォーマットを割り当てる
- 12. salesforceに日付を割り当てます。
- 13. MVCのプロパティに現在の日付を割り当てます。
- 14. Python Pandas:そのグループのすべてのエントリにDataFrame Groupの最終値を割り当てます。
- 15. 日時の値を今日の日付に特定の時間で割り当てます。
- 16. データフレーム列に値を割り当てる
- 17. Pandasで列を割り当てるときのSettingWithCopyWarningを扱う
- 18. グループのランダム割り当て
- 19. 値を割り当てる際に値を割り当てます
- 20. パンダの最大値を取得して列値を割り当てるグループ数
- 21. python-pandasのgroupbyを配列に割り当てる方法は?
- 22. c#クラスメンバーに条件付き値を割り当てます
- 23. 条件付きでデータフレーム内の別の列の値を割り当てます
- 24. ボタンに日付を自動的に割り当てる方法
- 25. 各グループの最初の3行に値を割り当てる
- 26. グループの最大値に基づいてDataFrame列に新しい値を割り当てます。
- 27. vbaでユーザ定義の日付を割り当てる方法
- 28. anglejsのカスタムディレクティブに日付を割り当てる方法は?
- 29. イベントをカレンダーの日付に割り当てるのはR
- 30. 特定のテキストに日付を割り当てるR
あなたが探しています[ ' pivot() '](http://pandas.pydata.org/pandas-docs/stabl e/generated/pandas.DataFrame.pivot.html)関数を使用します。使用方法の詳細については、[pandas docs](http://pandas.pydata.org/pandas-docs/stable/reshaping.html#reshaping-by-pivoting-dataframe-objects)を参照してください。 – elcombato