繁体   English   中英

Pandas - 转置一列

[英]Pandas - transpose one column

我在对熊猫使用转置时遇到了困难。

我有以下 df:

date         name    quantity
1/1/2018     A       5
1/1/2018     B       6
1/1/2018     C       7
1/2/2018     A       9
1/2/2018     B       8
1/2/2018     C       6

我最终想为每个日期的所有名称及其数量创建成对相关性。 为此,我首先尝试从该 df 创建以下输出:

 date       A    B    C
 1/1/2018   5    6    7
 1/2/2018   9    8    6

转置对我来说很困难,因为我可以获得重复的列标题,但我也不想通过先删除它们而丢失任何数据。 我有一种感觉,答案可能是我并不真正使用的熊猫实用程序,而且我可能在转置时使用隧道......

由于您没有执行聚合,因此pd.DataFrame.pivot应该优先于groupby / pivot_table

res = df.pivot(index='date', columns='name', values='quantity')

print(res)

name      A  B  C
date             
1/1/2018  5  6  7
1/2/2018  9  8  6

如果您愿意,可以使用reset_indexdate提升到一列。

我提出的解决方案绝不比 jpp 更好。 我只是碰巧遇到了同样的问题并以不同的方式解决了它。

df.set_index(['date', 'name']).unstack()

结果看起来也有点混乱,但它在我的情况下有效:

在此处输入图片说明

这是一个groupby解决方案,尽管与pivot方法相比,它非常不切实际。 我只会推荐这个作为熟悉熊猫索引的练习。

# Get values of 'quantity' for each date
x = df.groupby('date')['quantity'].agg(list)
# Insert these values into a new data frame
df2 = pd.DataFrame(index=x.index, data=x.to_list(), columns=df['name'].unique())

这将返回:

            A   B   C
date            
1/1/2018    5   6   7
1/2/2018    8   9   6

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM