有没有办法在 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
我有这个数据框。
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