在python中将行转换为列

2024-09-29 21:37:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有Fila\u ID,MIHF\u ID和Total。我需要将MIHF\u ID转换为基于total的列。每个Filaa\u ID都有多个MIHF\u ID。我试过使用Pivot,但这对集群没有帮助。我也需要全栏。你知道吗

        FILA_ID  MIHF_ID      Total
0          1514    34338 249525.220
1          1484    34338 240921.760
2          1514    30927 222260.790
3          1484    30929 214958.440
4         10481    34338 209155.460
...         ...      ...        ...
289783    10070   973713      0.000
289784      422   973713      0.000
289785      312    31563      0.000
289786      556   973713      0.000
289787       29   973713      0.000

我已经尝试使用group-by和unstacking,但是我无法选择转换的列。你知道吗

df_ = df.groupby(['FILA_ID','MIHF_ID'])['Total'].sum().unstack(fill_value=0)

我希望有Fila\u ID和MIHF\u ID以及total作为列。你知道吗


Tags: iddfbygroup集群totalpivotgroupby
1条回答
网友
1楼 · 发布于 2024-09-29 21:37:08

如果我没弄错你的问题,像这样?你知道吗

import pandas as pd
df = pd.DataFrame({"FILA_ID": [1514, 1484, 1514, 1484, 10481],
                   "MIHF_ID":    [34338, 34338, 30927, 30929, 34338],
                   "Total":    [249525.220, 240921.760, 222260.790, 214958.440, 209155.460]})

df_new = pd.DataFrame(df.groupby(['FILA_ID','MIHF_ID'])['Total'].sum().unstack(fill_value=0).stack())
df_new.reset_index(inplace=True)
df_new.rename(columns = {0:'Total'}, inplace=True)
df_new

    FILA_ID MIHF_ID Total
0   1484    30927   0.00
1   1484    30929   214958.44
2   1484    34338   240921.76
3   1514    30927   222260.79
4   1514    30929   0.00
5   1514    34338   249525.22
6   10481   30927   0.00
7   10481   30929   0.00
8   10481   34338   209155.46

相关问题 更多 >

    热门问题