保留现有列并将行转换为列[重复]
Posted
技术标签:
【中文标题】保留现有列并将行转换为列[重复]【英文标题】:Keep the existing columns and convert the row to column [duplicate] 【发布时间】:2021-08-10 17:14:59 【问题描述】:dataFrame Ticker、Attribute 和 Value 一共有三列。
The original dataFrame can be seen here
我想将属性值设置为一列,这可以通过将其设置为索引然后进行转置来轻松完成,但问题是我想在进行转置时将 Ticker 保留为列行。 When I take Attribute as an index and take its transpose
当我将两者都设置为索引然后进行转置时,它看起来像这样,我不想要 When both the Attribute and Ticker taken as index and transposed
我想要的是这个 The required output
【问题讨论】:
【参考方案1】:使用pivot_table
:
df = df.pivot_table(index= 'Ticker', columns='Attribute', values = 'Value')
【讨论】:
我尝试时值列不是数字,它会抛出错误 DataError: No numeric types to aggregate 对我也不起作用,不知道为什么这是公认的答案。【参考方案2】:示例数据框:
df = pd.DataFrame(
'Ticker': list('AAAAABBBB'),
'Key': list('112341234'),
'Value':list('ZQWERQWER')
)
通过您的索引和键处理重复组,并以您喜欢的任何方式聚合您的组。这里我先用,你也可以用list
累加整个组,例如:
df = df.groupby(['Ticker', 'Key'])['Value'].first().reset_index()
然后,最后,旋转表格:
df = df.pivot(index='Ticker', columns='Key', values='Value').reset_index()
【讨论】:
Ticker contains duplicates pivot 不允许重复,所以当我尝试删除重复项时,我只留下了单列市值 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高答案的长期价值。 @AdnanKhan - 编辑了答案并添加了一些处理重复项的代码。如果还有什么需要澄清的,请告诉我。 @rudolfovic 谢谢我试图连接两个数据帧,所以我在两个数据帧上分别应用了枢轴,并在旋转后加入对我有用以上是关于保留现有列并将行转换为列[重复]的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server - Pivot 将行转换为列(带有额外的行数据)
SQL Server 2008 R2,将列转换为行,将行转换为列[重复]
pandas删除数据行中的重复数据行基于dataframe所有列删除重复行基于特定数据列或者列的作何删除重复行删除重复行并保留重复行中的最后一行pandas删除所有重复行(不进行数据保留)