gpt4 book ai didi

python - Pandas:从多线观察到单线观察

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:41 24 4
gpt4 key购买 nike

假设我有这个数据框:

df = pd.DataFrame({'index':['10a','10a','10a','20b','20b','20b','30c','30c','30c']
,'var_vals': ['aaa','aaa','abb','bbb','bba','bbb','ccc','ccc','cab']
,'var2_vals':['aga','aga','add','bgb','bbd','bgb','cdd','cdd','cda']})
display(df)

看起来像这样:

    index   var_vals    var2_vals
0 10a aaa aga
1 10a aaa aga
2 10a abb add
3 20b bbb bgb
4 20b bba bbd
5 20b bbb bgb
6 30c ccc cdd
7 30c ccc cdd
8 30c cab cda

如何将输出变成单行,只有新列中的不同之处:

    index   var_vals     var_vals_0     var2_vals    var2_vals_0
0 10a aaa abb aga add
1 20b bbb bba bgb bbd
2 30c ccc cab cdd cda

我已经尝试过 groupby、pivot/pivot_table、stack/unstack 和 melt,但我要么以巨大的维度结束,要么数据丢失。

最佳答案

还有一个:

newdf = pd.DataFrame(df.groupby('index')['var_vals'].unique().tolist()).fillna('')
  1. tolist() 将数据传回列表格式,这使我们能够重新创建数据帧,再次将其传递给 pd.DataFrame()
  2. fillna 处理您可以拥有不同数量的唯一身份的事实。

更新代码:

dfs = (pd.DataFrame(df.groupby('index')[i].unique().tolist()).fillna('').add_prefix(i+'_')
for i in df.drop('index', 1))
df = pd.concat(dfs, axis=1)

完整示例

将 pandas 导入为 pd

df = pd.DataFrame({'index':['10a','10a','10a','20b','20b','20b','30c','30c','30c']
,'var_vals': ['aaa','aaa','abb','bbb','bba','bbb','ccc','ccc','cab']
,'var2_vals':['aga','aga','add','bgb','bbd','bgb','cdd','cdd','cda']})

df = pd.concat(
(pd.DataFrame(df.groupby('index')[i].unique().tolist()).fillna('').add_prefix(i+'_')
for i in df.drop('index', 1)), axis=1)

print(df)

返回:

  var2_vals_0 var2_vals_1 var_vals_0 var_vals_1
0 aga add aaa abb
1 bgb bbd bbb bba
2 cdd cda ccc cab

关于python - Pandas:从多线观察到单线观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52897666/

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