python - Pandas:基于标题子字符串的部分枢轴
问题描述
我熟悉标准的 Pandas 枢轴功能,但我想做的有点不同——而且我不习惯使用pivot
.
设置代码:
import pandas as pd
import io
csvA = io.StringIO(u'''
month chicken_a chicken_b chicken_c turkey_a turkey_b turkey_c
1 10 20 30 1 2 3
2 11 22 33 101 202 303
''')
dfA = pd.read_csv(csvA, sep = '\t')
产生:
month chicken_a chicken_b chicken_c turkey_a turkey_b turkey_c
0 1 10 20 30 1 2 3
1 2 11 22 33 101 202 303
我想将部分'_a', '_b', and '_c'
转向月份,但保留“鸡”和“火鸡”标题。最终结果将如下所示:
month chicken turkey
0 1a 10 1
1 1b 20 2
2 1c 30 3
3 2a 11 101
4 2b 22 202
5 2c 33 303
该'_a', '_b', '_c'
部分将永远是那样,并且会提前知道。
我可以通过循环破解这个for
,但我想知道是否有更熊猫的方式。
解决方案
我找到了一个我不喜欢的解决方案,但仍然觉得有点 hacky,但是没有循环,它完成了工作。我绝对愿意接受更好的解决方案:
df = dfA.set_index('month').stack().reset_index()
df['month_type'] = df['month'].astype(str) + df['level_1'].str[-1:]
df['level_1'] = df['level_1'].str[:-2]
df = df.drop(['month'], axis = 1)
df = df.pivot(index = 'month_type', columns = 'level_1', values = 0)
df = pd.DataFrame(df.to_records())
推荐阅读
- python - 如何使用python选择多个文本坐标,使其不与同一背景图像中的多个图像坐标重叠?
- r - 如何使用 Pearson IV 型误差分布在 R 中运行回归?
- django - django docker 无法访问 nginx 端口
- python - 如何使用 SQLALCHEMY_BINDS 将 pandas.DataFrame.to_sql 与多个数据库一起使用
- opengl - GLSL中统一和常量之间的不同浮点行为
- google-app-engine - 我在这里做错了什么?每当我执行这一行时,它都会指向一个目录
- javascript - 修改子组件中的数据并使其在父组件中作为道具可用
- r - 从 data.frame 中的每一列中选择 10 个最高值并按降序绘制
- java - 为什么当我将元素绑定到其中时,我的代码总是收到空指针异常?我在 Android Studio 中使用 Java
- elasticsearch - 多个词在搜索中充当单个词 - Elasticsearch