如何使用 pandas.melt 来取消透视我的数据框?
How can I use pandas.melt to unpivot my dataframe?
我有这样的数据
time close
date
6/1/20 00:00 4375.5
6/1/20 00:15 4374.0
6/1/20 00:30 4376.5
...
我使用 df.pivot(columns='time', values='close') 来输出这个(如我所愿)
00:00 00:15 00:30
date
6/1/20 4375.5 4374.0 4376.5
...
I 运行 时间范围内的 pct 变化 df.pct_change(轴=1)
00:00 00:15 00:30
date
6/1/20 NaN .00312 .00123 #these are just not real calcs, just putting in nums for example
...
现在我想融化 df,但是我很难做到。我想让数据框回到原来的布局
time pct_change
date
6/1/20 00:00 NaN
6/1/20 00:15 .00312
6/1/20 00:30 .00123
...
我之所以要这样做是因为plotly.express.density_heatmap() 无法读取非熔化形式的数据。我正在使用 streamlit 并想插入一个图表 plotly 但最终图表只需要看起来与 df.style.background_gradient(cmap='green')
from plotly.express as px
#this code doesnt work, but this is how ideally want to input it.
fig = px.density_heatmap(df, x='time', y='date', z='pct_change')
感谢各位指导!
你错过了一个日期,你可以试试这个
df2=df.pivot(index='date', columns=['time'], values='close').pct_change(axis=1)
df2
time 00:00 00:15 00:30
date
6/1/20 NaN -0.000343 0.000572
df2.unstack().reset_index()
time date 0
0 00:00 6/1/20 NaN
1 00:15 6/1/20 -0.000343
2 00:30 6/1/20 0.000572
如果你有一个合适的日期时间索引,这一切都会变得容易得多:
df.reset_index(inplace=True)
df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'])
df = df.set_index('datetime').drop(['date', 'time'], axis=1)
print(df.pct_change())
输出:
close
datetime
2020-06-01 00:00:00 NaN
2020-06-01 00:15:00 -0.000343
2020-06-01 00:30:00 0.000572
我有这样的数据
time close
date
6/1/20 00:00 4375.5
6/1/20 00:15 4374.0
6/1/20 00:30 4376.5
...
我使用 df.pivot(columns='time', values='close') 来输出这个(如我所愿)
00:00 00:15 00:30
date
6/1/20 4375.5 4374.0 4376.5
...
I 运行 时间范围内的 pct 变化 df.pct_change(轴=1)
00:00 00:15 00:30
date
6/1/20 NaN .00312 .00123 #these are just not real calcs, just putting in nums for example
...
现在我想融化 df,但是我很难做到。我想让数据框回到原来的布局
time pct_change
date
6/1/20 00:00 NaN
6/1/20 00:15 .00312
6/1/20 00:30 .00123
...
我之所以要这样做是因为plotly.express.density_heatmap() 无法读取非熔化形式的数据。我正在使用 streamlit 并想插入一个图表 plotly 但最终图表只需要看起来与 df.style.background_gradient(cmap='green')
from plotly.express as px
#this code doesnt work, but this is how ideally want to input it.
fig = px.density_heatmap(df, x='time', y='date', z='pct_change')
感谢各位指导!
你错过了一个日期,你可以试试这个
df2=df.pivot(index='date', columns=['time'], values='close').pct_change(axis=1)
df2
time 00:00 00:15 00:30
date
6/1/20 NaN -0.000343 0.000572
df2.unstack().reset_index()
time date 0
0 00:00 6/1/20 NaN
1 00:15 6/1/20 -0.000343
2 00:30 6/1/20 0.000572
如果你有一个合适的日期时间索引,这一切都会变得容易得多:
df.reset_index(inplace=True)
df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'])
df = df.set_index('datetime').drop(['date', 'time'], axis=1)
print(df.pct_change())
输出:
close
datetime
2020-06-01 00:00:00 NaN
2020-06-01 00:15:00 -0.000343
2020-06-01 00:30:00 0.000572