Python 有没有办法不使用for循环转置这个表
我有以下数据帧:Python 有没有办法不使用for循环转置这个表,python,pandas,Python,Pandas,我有以下数据帧: import pandas as pd df = pd.DataFrame([[1, 100, 300, 250], [2, 475, 200, 0], [3, 125, 365, 100]], columns=['Client_ID', 'Purchase 1', 'Purchase 2', 'Purchase 3']) ╔═══════════╦════════════╦══════════
import pandas as pd
df = pd.DataFrame([[1, 100, 300, 250],
[2, 475, 200, 0],
[3, 125, 365, 100]], columns=['Client_ID', 'Purchase 1', 'Purchase 2', 'Purchase 3'])
╔═══════════╦════════════╦════════════╦════════════╗
║ Client_ID ║ Purchase 1 ║ Purchase 2 ║ Purchase 3 ║
╠═══════════╬════════════╬════════════╬════════════╣
║ 1 ║ 100 ║ 300 ║ 250 ║
║ 2 ║ 475 ║ 200 ║ 0 ║
║ 3 ║ 125 ║ 365 ║ 100 ║
╚═══════════╩════════════╩════════════╩════════════╝
我想将该表转置如下:
╔═══════════╦═══════════╗
║ Client_ID ║ Purchases ║
╠═══════════╬═══════════╣
║ 1 ║ 100 ║
║ 1 ║ 300 ║
║ 1 ║ 250 ║
║ 2 ║ 475 ║
║ 2 ║ 200 ║
║ 2 ║ 0 ║
║ 3 ║ 125 ║
║ 3 ║ 365 ║
║ 3 ║ 100 ║
╚═══════════╩═══════════╝
我尝试了df.T,但没有成功,我不想使用for循环。有没有办法做到这一点?您可以:
df.melt('Client_ID', value_name='Purchases').set_index('Client_ID').sort_index().drop('variable', axis=1)
给予:
Purchases
Client_ID
1 100
1 300
1 250
2 475
2 200
2 0
3 125
3 365
3 100
你可以做:
df.melt('Client_ID', value_name='Purchases').set_index('Client_ID').sort_index().drop('variable', axis=1)
给予:
Purchases
Client_ID
1 100
1 300
1 250
2 475
2 200
2 0
3 125
3 365
3 100
这看起来像一个轴心。@Alolz顺序不重要!这回答了你的问题吗?这看起来像一个轴心。@Alolz顺序不重要!这回答了你的问题吗?