【问题标题】:Create a hierarchical index from a .tsv file (pandas)从 .tsv 文件 (pandas) 创建层次索引
【发布时间】:2016-10-22 06:06:24
【问题描述】:
我有一个这种形状的数据框(不是实际的):
水果香蕉屋-1 15
水果香蕉屋-2 4
水果苹果屋-2 6
水果苹果屋-2 8
蔬菜西兰花屋 3 8
生菜馆-4 12
蔬菜辣椒屋 5 3
蔬菜玉米屋-4 4
调味橄榄油屋 6 2
调味醋屋-7 2
我想知道是否有一种方法可以在 Pandas 中创建一个具有以下两个级别的分层索引的数据框:食物类型、食物。然后为每个人分配一个位置和一个数量。我无法手动执行此操作,因为实际数据集有超过 60,000 行。我想到的一种方法是从 tsv 文件创建一个列表,然后将其用作索引,但我想还有一种更自动的方法。提前致谢!
【问题讨论】:
标签:
python
csv
pandas
indexing
dataframe
【解决方案1】:
试试这个:
In [11]: df
Out[11]:
Type Food Loc Num
0 Fruit Banana House-1 15
1 Fruit Banana House-2 4
2 Fruit Apple House-2 6
3 Fruit Apple House-2 8
4 Vegetable Broccoli House-3 8
5 Vegetable Lettuce House-4 12
6 Vegetable Peppers House-5 3
7 Vegetable Corn House-4 4
8 Seasoning Olive Oil House-6 2
9 Seasoning Vinegar House-7 2
In [13]: df = df.set_index(['Type','Food'])
In [14]: df
Out[14]:
Loc Num
Type Food
Fruit Banana House-1 15
Banana House-2 4
Apple House-2 6
Apple House-2 8
Vegetable Broccoli House-3 8
Lettuce House-4 12
Peppers House-5 3
Corn House-4 4
Seasoning Olive Oil House-6 2
Vinegar House-7 2
顺便说一句,您可以在读取 TSV/CSV 文件时“即时”执行此操作:
df = pd.read_csv(filename, sep='\t', header=None,
columns=['Type','Food','Loc','Num'],
index_col=['Type','Food'])