簡體   English   中英

如何使用列名稱作為熊貓數據框中的值?

[英]how to use column names as values in a pandas data frame?

我有這個熊貓數據框:

df = DataFrame({'B' : ('A','B','C','D','E','F','G'), 'C' : (1,3,5,6,8,2,5), 'D' : (5,2,6,9,3,7,3)})




    B  C  D
 0  A  1  5
 1  B  3  2
 2  C  5  6
 3  D  6  9
 4  E  8  3
 5  F  2  7
 6  G  5  3

我需要使計算出色。 對我來說方便的格式是:

    B description  value
0   A           C      1
1   B           C      3
2   C           C      5
3   D           C      6
4   E           C      8
5   F           C      2
6   G           C      5
7   A           D      5
8   B           D      2
9   C           D      6
10  D           D      9
11  E           D      3
12  F           D      7
13  G           D      3

有沒有辦法使用列名作為值

您可以為此使用方便的pd.melt ,請參閱@unutbu的答案。 更通用的方法是使用stack ,但這需要更多的手動調整:

In [139]: df.set_index('B').stack().reset_index()
Out[139]:
    B level_1  0
0   A       C  1
1   A       D  5
2   B       C  3
3   B       D  2
4   C       C  5
5   C       D  6
6   D       C  6
7   D       D  9
8   E       C  8
9   E       D  3
10  F       C  2
11  F       D  7
12  G       C  5
13  G       D  3

重命名和排序后:

In [150]: result = df.set_index('B').stack().reset_index()

In [151]: result = result.rename(columns={'level_1':'description', 0:'value'})

In [152]: result.sort(['description', 'B']).reset_index(drop=True)
Out[152]:
    B description  value
0   A           C      1
1   B           C      3
2   C           C      5
3   D           C      6
4   E           C      8
5   F           C      2
6   G           C      5
7   A           D      5
8   B           D      2
9   C           D      6
10  D           D      9
11  E           D      3
12  F           D      7
13  G           D      3

您可以使用pd.melt

In [13]: pd.melt(df, id_vars=['B'], var_name='description')
Out[13]: 
    B description  value
0   A           C      1
1   B           C      3
2   C           C      5
3   D           C      6
4   E           C      8
5   F           C      2
6   G           C      5
7   A           D      5
8   B           D      2
9   C           D      6
10  D           D      9
11  E           D      3
12  F           D      7
13  G           D      3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM