[英]How to create a column depending on the row index values in a multiindex pandas dataframe?
假设您有以下数据框:
ridx = pd.MultiIndex.from_tuples([('Tom','apple'),('Tom','banana'),('Anna','banana'),('Anna','citrus')], names=['basket', 'fruit'])
df = pd.DataFrame({'Quantity' : [1, 2, 3, 4]}, index=ridx)
df
你有一本字典,告诉你每个水果含有多少糖:
sugar_content = {'apple':3,'banana':10,'citrus':2}
您如何向包含“水果”索引中指定的水果的糖含量的数据框添加新列?
更快的方法来做到这一点:
In [58]: df['sugar_content'] = df.reset_index()['fruit'].map(sugar_content).to_frame().set_index(df.index)
In [59]: df
Out[59]:
Quantity sugar_content
basket fruit
Tom apple 1 3
banana 2 10
Anna banana 3 10
citrus 4 2
解释:
In [60]: df.reset_index()['fruit'].map(sugar_content)
Out[60]:
0 3
1 10
2 10
3 2
Name: fruit, dtype: int64
In [61]: df.reset_index()['fruit'].map(sugar_content).to_frame()
Out[61]:
fruit
0 3
1 10
2 10
3 2
In [62]: df.reset_index()['fruit'].map(sugar_content).to_frame().set_index(df.index)
Out[62]:
fruit
basket fruit
Tom apple 3
banana 10
Anna banana 10
citrus 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.