带有列前缀的数据透视表 pandas

Axa*_*ack 9 python pivot pandas

我正在尝试重塑数据框,如图所示。我想创建一个宽数据框,其中 asset 中的值作为带有前缀 asset_ 的新列。在新的 asset_ 列中,应存储 value 列中的相应值。请参阅附图。这是某种枢轴操作,但我无法弄清楚以下内容:

  1. 如何动态地将前缀 asset_ 添加到新列。
  2. 如何保持每行的 ser_num 和 day 列具有相同的值。

我尝试使用 pandas.pivot 执行此操作,但没有前缀参数,并且我不想创建任何多级索引:

Import pandas as pd
data  = {"rowkey":["2017:P7W", "2017:P7W", "2017:P7W"], 
            "ser_num":[467, 467, 467], 
            "asset": ["A", "B", "C"], 
            "value": [123,456, 789],
           "day":[1,1,1]}
df = pd.DataFrame(data)
df.pivot(index="rowkey", columns="asset", values="value").reset_index()
Run Code Online (Sandbox Code Playgroud)

在我的问题中,我有 200 多个独特的资产,因此结果将是一个非常宽的数据框。查看图片:

操作前的数据框

操作后的数据框

aba*_*kar 10

您可以使用add_prefix()如下所示的方法:

# Create pandas dataframe
import pandas as pd 
data  = {
  "rowkey": ["2017:P7W", "2017:P7W", "2017:P7W"], 
  "ser_num": [467, 467, 467], "asset": ["A", "B", "C"], 
  "value": [123,456,789],"day":[1,1,1]
} 
df = pd.DataFrame(data)

# Pivot data and add prefix
df.pivot(index="rowkey",columns="asset",values="value").reset_index().add_prefix('asset_')

Run Code Online (Sandbox Code Playgroud)

这里是操作后的输出:

输出

最好的,

阿巴卡尔

  • 这是一个很好的答案,只需一个小调整,该函数是带有两个 d 的“add_prefix()” (2认同)