python - Pandas - 堆叠多列
问题描述
我构建了以下 DataFrame:
Movies Cost Tickets
0 1158 0.000000 2.000000
1 1158 0.000000 0.000000
2 1158 0.000000 0.000000
3 1158 0.000000 3.000000
我使用 stack() 将我的配置更改为:
Event 1
0 Movies 1158
1 Cost 0.000000
2 Tickets 2.000000
3 Movies 1158
4 Cost 0.000000
5 Tickets 0.000000
6 Movies 1158
7 Cost 0.000000
8 Tickets 0.000000
9 Movies 1158
10 Cost 0.000000
11 Tickets 3.000000
但这是将数据堆叠在一起,我希望创建一个新列,最终目标是:
Event 1 Event 2 Event 3 Event 4
0 Movies 1158 1158 1158 1158
1 Cost 0.000000 0.000000 0.000000 0.000000
2 Tickets 2.000000 0.000000 0.000000 3.000000
这是我当前的配置:
df = pd.DataFrame({
'Tickets': pd.Series(Tickets),
'Movies': pd.Series(Movies),
'Cost': pd.Series(costs)})
print(df)
df.columns.name = ''
stackEvent3 = df.stack()
stackEvent3 = df.stack().reset_index(level=0, drop=True).reset_index(name='Event1')
非常感谢任何指导,谢谢!
解决方案
DataFrame.transpose
与 一起使用DataFrame.add_prefix
:
new_df = df.T.rename(columns=dict(zip(df.index, df.index+1))).add_prefix('Event ')
Event 1 Event 2 Event 3 Event 4
Movies 1158.0 1158.0 1158.0 1158.0
Cost 0.0 0.0 0.0 0.0
Tickets 2.0 0.0 0.0 3.0
设置列名称,就像您想要DataFrame.rename
构建一个要替换的字典一样:
df.T.rename(columns=dict(zip(df.index, ['brown', 'purple', 'yellow', 'blue'])))
或者
new_df = df.T
new_df.columns = ['brown', 'purple', 'yellow', 'blue']
推荐阅读
- linux - 将浮点数与整数进行比较以在 shell 编程中获得输出?
- security - 为什么拥有可缓存的 https 响应是错误的?
- python - 使用python在文本文件中搜索植物名称
- typescript - TypeScript 和模块选项设置为 es2015/es2020/esnext
- python - Python 中的 Epitrocoid 没有给出正确的情节
- ios - 如何在使用 UIImagePickerController 选择的 UIImageView 中显示图像?
- visual-studio - 在 React Native 中创建下拉菜单的最佳方法
- firebase - 在另一台服务器上通过 Firebase 功能进行身份验证的最佳做法是什么?
- python - 让 Alexa Skill 播放音频
- python - 相同的打印语句为排序算法(插入排序)提供不同的输出