我知道如何將行拆分成列,但是如何處理下表?
| 日期 | 假的 | 平均 | 標簽 |
|---|---|---|---|
| 1-19 | 1 | 20 | l1 |
| 1-19 | 0 | 40 | l1 |
| 1-27 | 1 | 100 | l2 |
| 1-27 | 0 | 140 | l2 |
期待表:
| 日期 | avg_t | avg_c | 標簽 |
|---|---|---|---|
| 1-19 | 20 | 40 | l1 |
| 1-27 | 100 | 140 | l2 |
當“dummy”等于 1 時,“avg”為 20,并將其重命名為“avg_t”作為列。類似于列“avg_c”。
我試過:
df.groupby(['dummy','avg']).size().unstack
這沒用。
uj5u.com熱心網友回復:
您也可以使用pivot_widerfrom janitor:。
# pip install pyjanitor
import pandas as pd
import janitor
df.pivot_wider(index = ['date', 'lable'], names_from = 'dummy')
Out[19]:
date lable avg_0 avg_1
0 1-19 l1 40 20
1 1-27 l2 140 100
如果你想要t和c:
(df.assign(dummy = df['dummy'].map({0:'c', 1:'t'})).
pivot_wider(index = ['date', 'lable'], names_from = 'dummy'))
Out[20]:
date lable avg_c avg_t
0 1-19 l1 40 20
1 1-27 l2 140 100
uj5u.com熱心網友回復:
DataFrame.assign通過with創建新列Series.map,然后使用DataFrame.pivotwith DataFrame.add_prefix:
df = (df.assign(new = df['dummy'].map({0:'c', 1:'t'}))
.pivot(['date','lable'], 'new', 'avg')
.add_prefix('avg_')
.reset_index()
.rename_axis(None, axis=1))
print (df)
date lable avg_c avg_t
0 1-19 l1 40 20
1 1-27 l2 140 100
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/461317.html
標籤:python-3.x 熊猫 数据框
上一篇:日期間隔平均Python熊貓
下一篇:R:洗掉已翻轉的重復行
