此问题已在此处有答案:
pandas, convert DataFrame to MultiIndex'ed DataFrame(1个答案)
Sorting a pandas DataFrame by one level of a MultiIndex(1个答案)
11天前关闭
我有一个df,看起来像这样:
import pandas as pd
# Create df
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Carol', 'Alice', 'Carol', 'Alice', 'Carol', 'Matt'],
'Address': ['123 A St', '123 B St', '123 C St', '123 A St', '123 C St', '456 X St', '123 C St', '123 M St'],
'State': ['AZ', 'TX', 'CA', 'AZ', 'CA', 'AZ', 'CA', 'MA'],
'Car': ['GMC', 'Mazda', 'Tesla', 'Honda', 'Nissan', 'Subaru', 'Mazda', 'Buick'],
'Miles': [1111, 2222, 3333, 4444, 5555, 6666, 7777, 8888]})
# Display df
display(df)
目标
我希望输出是一个多索引df使用'名称','地址',和'状态',看起来如下:
| 名称|地址|状态|车|英里|
| --|--|--|--|--|
| 爱丽丝|123 A街|AZ| GMC| 1111 |
| | | | Honda | 4444 |
| 爱丽丝|456 X街|AZ|斯巴鲁| 6666 |
| 鲍勃|123 B St| TX|马自达| 2222 |
| 卡罗尔|123 C St| CA|特斯拉| 3333 |
| | | | Nissan | 5555 |
| | | | Mazda | 7777 |
| 马特|123 M St|马|别克| 8888 |
代码尝试
我尝试了以下代码,但它没有将具有相同多索引值的所有数据行分组:
df = df.set_index(keys=['Name', 'Address', 'State'])
谢谢你能提供的任何帮助。
1条答案
按热度按时间kokeuurv1#
你可以在设置索引后对它进行排序,但是你最终会得到所有的
Alice
值组合在一起:输出量:
为了得到接近你想要的结果,你需要先在
['Address', 'State', 'Name']
上索引,然后在Name
上排序:输出量: