有没有办法在 Python 中使用行值作为列输出?

Is there a way of getting using row values as column outputs in Python?

我有这个数据框。

data1 = pd.DataFrame({"A": ["LOG", "20D", "20D", "40D", "40D"],
               "B": ["G827", "B565", "B565", "K268", "B565"],
               "C": ["YYY", "YYY", "YYY", "YYY", "YYY"],
               "D": [10, 4, 5, 2, 1],
               "E": ["2021-04-18", "2021-04-18", "2021-04-18", "2021-04-16", "2021-04-16"]})
                    

下面的结果应该是A,B,C,E组的输出,然后得到D的总和,然后将D的总和作为日期下的唯一值(最初是E,现在改为日期)。试图解决这个问题。

data_MOD = pd.DataFrame({"A": ["LOG", "20D","40D", "40D"],
               "B": ["G827", "B565", "K268", "B565"],
               "C": ["YYY", "YYY", "YYY", "YYY"],                   
               "2021-04-18":[10,9,'NaN','NaN'],
                "2021-04-16":['NaN','NaN',2,1]})

尝试:

data1.pivot_table('D', ['A', 'B', 'C'], 'E', aggfunc='sum').reset_index()

输出:

E    A     B    C  2021-04-16  2021-04-18
0  20D  B565  YYY         NaN         9.0
1  40D  B565  YYY         1.0         NaN
2  40D  K268  YYY         2.0         NaN
3  LOG  G827  YYY         NaN        10.0

您还可以这样做:

data1.groupby(['A','B','C', 'E']).sum().unstack().reset_index()

    A   B   C   D
E                 2021-04-16    2021-04-18
0   20D B565    YYY      NaN    9.0
1   40D B565    YYY      1.0    NaN
2   40D K268    YYY      2.0    NaN
3   LOG G827    YYY      NaN    10.0