gpt4 book ai didi

python - Pandas:基于标题子字符串的部分枢轴

转载 作者:行者123 更新时间:2023-12-01 01:18:54 33 4
gpt4 key购买 nike

我熟悉标准的 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'和'_c'部分旋转到月份,但保留'chicken'和'turkey'标题。最终结果如下所示:

  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 循环破解这个问题,但我想知道是否有更 Pandas 的方式。

最佳答案

我找到了一个我不喜欢的解决方案,但仍然感觉有点老套,但没有循环,它可以完成工作。我绝对愿意接受更好的解决方案:

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 - Pandas:基于标题子字符串的部分枢轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54031511/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com