gpt4 book ai didi

python - 如何展开多级 Pandas 数据框

转载 作者:行者123 更新时间:2023-12-03 23:33:23 24 4
gpt4 key购买 nike

我有一个包含三列的 pandas 数据框,前两列是因子,第三列包含计数。我想“分解”或“展开”数据框,以便第一列、第二列的每个唯一元素都没有一行,我的行数等于计数列的总和,每个新行都有一个唯一且递增的标识符号,但我希望两列之一中的每个级别都有一个单独的计数器。注意,这个问题类似于 How can I 'unroll' a pandas dataframe?我昨天问过,但有一些我第一次没有认识到的额外并发症,我无法概括(对我自己)如何扩展它。

这是数据框

data = [['van', 'bc', 1], ['abb', 'bc', 3], ['vic','bc',3], ['cal', 'ab', 1], ['edm', 'ab', 2], ['cal','ab', 2], ['van', 'bc', 1]]
df = pd.DataFrame(data, columns = ['city', 'state', 'count'])

我想把它变成这个


data = [['van', 'bc', 'dr0001'], ['abb', 'bc', 'dr0002'], ['abb', 'bc', 'dr0003'], ['abb', 'bc', 'dr0004'], ['vic', 'bc', 'dr0005'], ['vic', 'bc', 'dr0006'], ['vic', 'bc', 'dr0007'], ['cal', 'ab', 'dr0001'], ['edm', 'ab', 'dr0002'], ['edm', 'ab', 'dr0003'], ['edm', 'ab', 'dr0004'], ['edm', 'ab', 'dr0005'], ['van', 'bc', 'dr0008']]
df = pd.DataFrame(data, columns = ['city', 'state', 'id'])

谢谢

最佳答案

试试这个,我认为你需要一个额外的 groupby 并带有一些格式来查看你的输出:

out = df.loc[df.index.repeat(df["count"])]
out = (
out.assign(
id=out.groupby("state")
.cumcount()
.add(1)
.astype(str)
.str.zfill(4)
.radd("dr")
)
.drop("count", 1)
.reset_index(drop=True)
)

print(out)

city state id
0 van bc dr0001
1 abb bc dr0002
2 abb bc dr0003
3 abb bc dr0004
4 vic bc dr0005
5 vic bc dr0006
6 vic bc dr0007
7 cal ab dr0001
8 edm ab dr0002
9 edm ab dr0003
10 cal ab dr0004
11 cal ab dr0005
12 van bc dr0008

关于python - 如何展开多级 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66281617/

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