gpt4 book ai didi

python - 无法 reshape (枢轴) Pandas DF

转载 作者:行者123 更新时间:2023-12-01 15:29:59 25 4
gpt4 key购买 nike

所以我有这个 DF:

In [130]: dfAbr
Out[130]:
ip ospfArea router_name
0 1.1.1.1 0.0.0.2 Router1-1
1 1.1.1.2 0.0.0.2 Router1-2
140 5.5.5.1 0.0.0.5 Router5-1
141 5.5.5.2 0.0.0.5 Router5-2

我想将其 reshape 为 2 行数据框,例如:

enter image description here

我一直在玩 stack/unstackpivot 函数,但没能走那么远。

例如,dfAbr1 = pd.DataFrame(dfAbr.set_index('ospfArea').stack()).reset_index(),重命名列名,产生以下内容:

In [151]: dfAbr1
Out[151]:
ospfArea level1 level2
0 0.0.0.2 ip 1.1.1.1
1 0.0.0.2 router_name Router1-1
2 0.0.0.2 ip 1.1.1.2
3 0.0.0.2 router_name Router1-2
4 0.0.0.5 ip 5.5.5.1
5 0.0.0.5 router_name Router5-1
6 0.0.0.5 ip 5.5.5.2
7 0.0.0.5 router_name Router5-2

从那里,我想旋转它,像这样:dfAbr1.pivot(index='ospfArea', columns='level1',values='level2'),但无法执行此操作,因为我得到 Index contains duplicate entries, cannot reshape。我相信这是因为在 level1 下我有重复的值...

还有其他方法吗?

谢谢!

最佳答案

通过 DataFrame.set_index 创建 MultiIndex带计数器列 GroupBy.cumcount , 通过 DataFrame.unstack reshape 并通过 map 使用 format 压平 Multiindex:

df = df.set_index(['ospfArea', df.groupby('ospfArea').cumcount().add(1)]).unstack()
df.columns = df.columns.map('{0[0]}{0[1]}'.format)
print (df)
ip1 ip2 router_name1 router_name2
ospfArea
0.0.0.2 1.1.1.1 1.1.1.2 Router1-1 Router1-2
0.0.0.5 5.5.5.1 5.5.5.2 Router5-1 Router5-2

关于python - 无法 reshape (枢轴) Pandas DF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59426847/

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