python - 将行转置为列,同时根据组展平数据框

标签 python pandas dataframe

我有以下数据框...

idx Group      key     value  Time     IsTrue  
1   bicycle    person  yes    9:30      yes         
2   bicycle    name    bob    9:30      yes         
3   bicycle    alive   yes    9:30      yes            
5   non-cycle  person  no     1:30      no      
6   non-cycle  name    jack   1:30      no               

我想要从数据框中得到以下结果

idx Group       Time  IsTrue person name  alive
1   bicycle     9:30  yes    yes    bob   yes
2   non-cycle   1:30  no     no     jack  NA

其中键列成为新列,值是这些新列的行。除了键和值列之外,所有其他行始终具有相同的值。按键会改变,所以我想要一些动态的东西。

我当前的解决方案使用 pandas groupby & apply (基于 Group 列),并为每个组创建一个新的数据框,但这似乎过度设计。有没有更简单的解决方案?

最佳答案

编辑:
当你固定输出时。我使用 set_indexunstack

添加了另一个解决方案
df.set_index(['Group', 'Time', 'IsTrue', 'key'])['value'].unstack().reset_index()

Out[503]:
key      Group  Time IsTrue alive  name person
0      bicycle  9:30    yes   yes   bob    yes
1    non-cycle  1:30     no   NaN  jack     no

原文:
您想要的输出令人困惑。如果这是您想要的,让我们尝试一下这个解决方案。如果不是的话我就删除

df.pivot_table(index=['Group', 'Time', 'IsTrue'], columns='key', values='value', aggfunc='first').reset_index()

Out[487]:
key      Group  Time IsTrue alive  name person
0      bicycle  9:30    yes   yes   bob    yes
1    non-cycle  1:30     no   NaN  jack     no

关于python - 将行转置为列,同时根据组展平数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58090277/

相关文章:

python - 一次制作多个地 block

python - 基于多个键之一对 Pandas 中的一系列值求和?

r - data.table/data.frame rbind 无法正常工作

python - Pandas Dataframe 到键值对和 csv 格式

python - 将字典的键与列表进行比较

用于创建和合并数据库数据透视表的 Python Pandas For 循环

python - 使用 Pandas 数据框查找不同小数位的值

python - 跟踪 Django 包更新

pandas - 如何将多个 Pandas 数据帧连接到一个大于内存的 dask 数据帧?

Pandas 数据框分组并按工作日排序