gpt4 book ai didi

python - 迭代和修改 Pandas Dataframe 或 groupby 对象

转载 作者:太空宇宙 更新时间:2023-11-03 14:56:12 25 4
gpt4 key购买 nike

我是 Pandas 新手,正在使用以下形式的多索引数据集(由 groupby 制作):

Name 
Year
Month
Day
DataA DataB SpeciesName SpeciesValue
A B Name1 Value1
A B Name2 Value2
A B Name3 Value3

对于每个组(唯一的名称、年、月、日),只有最后两列具有不同的值,其余列都是相同的。我想让每个组包含一行。该行将以 SpeciesName 值作为列标题,以 SpeciesValue 值作为条目。例如,上面一组的结果应该是:

Name 
Year
Month
Day
DataA DataB Name1 Name2 Name3
A B Value1 Value2 Value3

我该如何解决这个问题?迭代数据框或 groupby 对象并创建一个具有我想要的结构的新数据框,或者有更好的方法吗?

最佳答案

好的,使用set_indexunstack,然后reset_index:

df = pd.DataFrame({'Name':['Blake']*3,'Year':[2017]*3,
'Month':[1]*3,
'Day':[15]*3,
'DataA':['A']*3,
'DataB':['B']*3,
'SpeciesName':['Name1','Name2','Name3'],
'SpeciesValue':['Value1','Value2','Value3']})

df = df.set_index(['Name','Year','Month','Day'])

df

示例输入数据框:

                     DataA DataB SpeciesName SpeciesValue
Name Year Month Day
Blake 2017 1 15 A B Name1 Value1
15 A B Name2 Value2
15 A B Name3 Value3

现在,让我们 reshape 数据框:

df_out = df.set_index(['DataA','DataB','SpeciesName'],append=True)['SpeciesValue']\
.unstack()\
.reset_index(level=[-1,-2])

print(df_out)

输出:

SpeciesName          DataA DataB   Name1   Name2   Name3
Name Year Month Day
Blake 2017 1 15 A B Value1 Value2 Value3

关于python - 迭代和修改 Pandas Dataframe 或 groupby 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45555393/

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