Pandas dataframe 将行转换为列
Pandas dataframe convert rows to columns
我已经尝试这样做一段时间了,我什至在这里查看了其他一些线程,但似乎直到现在还没有人遇到过这样的问题。
This is my dataframe
所以,我一直在尝试将包含 10 个不同可能值的“TipoPromo”列变成 10 个不同的列,这些列上的值应该是出现在“Desconto”列上的值。这样做我希望能显着减少我的数据框上的行数,从而减少你们在其他行上看到的重复项(如果你查看“门票”等列,你会发现有很多值重复自己)。我试过使用 pivot 函数,但收效甚微。你们能明白我想说什么吗?
任何帮助将不胜感激!
pandas 中的数据透视表可以解决这个问题。我将前 5 行和省略号行下方的一行复制为 csv 文件,然后:
df=pd.read_csv('data.txt',header=0)
cols=df.columns
cols=cols.drop(['Desconto','TipoPromo'])
df.pivot_table(columns='TipoPromo' , values='Desconto', index=cols.to_list()).reset_index()
这给出:
TipoPromo Mes Dias Semana DiaSemana Bandeira Categoria Tickets ... Venda Liquida CMV CODIGO 12 DIGITAL MARK DOWN (CODIGO 5) MEU DESCONTO NIVEL LOJA
0 JANEIRO/2019 2019-01-06 S01 DOM PAO DE ACUCAR PEREC COMPLEMENTER 152240 ... 1956066.000 1340467.172 NaN NaN NaN 26463.40 NaN
1 OUTOBRO/2021 2021-10-25 S44 SEG EXTRA HIPER LIQUIDA 24344 ... 453297.096 376097.323 0.0 14363.72 -21.05 1852.07 5776.574
我已经尝试这样做一段时间了,我什至在这里查看了其他一些线程,但似乎直到现在还没有人遇到过这样的问题。 This is my dataframe
所以,我一直在尝试将包含 10 个不同可能值的“TipoPromo”列变成 10 个不同的列,这些列上的值应该是出现在“Desconto”列上的值。这样做我希望能显着减少我的数据框上的行数,从而减少你们在其他行上看到的重复项(如果你查看“门票”等列,你会发现有很多值重复自己)。我试过使用 pivot 函数,但收效甚微。你们能明白我想说什么吗?
任何帮助将不胜感激!
pandas 中的数据透视表可以解决这个问题。我将前 5 行和省略号行下方的一行复制为 csv 文件,然后:
df=pd.read_csv('data.txt',header=0)
cols=df.columns
cols=cols.drop(['Desconto','TipoPromo'])
df.pivot_table(columns='TipoPromo' , values='Desconto', index=cols.to_list()).reset_index()
这给出:
TipoPromo Mes Dias Semana DiaSemana Bandeira Categoria Tickets ... Venda Liquida CMV CODIGO 12 DIGITAL MARK DOWN (CODIGO 5) MEU DESCONTO NIVEL LOJA
0 JANEIRO/2019 2019-01-06 S01 DOM PAO DE ACUCAR PEREC COMPLEMENTER 152240 ... 1956066.000 1340467.172 NaN NaN NaN 26463.40 NaN
1 OUTOBRO/2021 2021-10-25 S44 SEG EXTRA HIPER LIQUIDA 24344 ... 453297.096 376097.323 0.0 14363.72 -21.05 1852.07 5776.574