[英]Add pandas Series as a column to DataFrame filling levels of multi-index
我有一個帶有多索引的數據框和一個系列:
import pandas as pd
import numpy as np
df = pd.DataFrame({'foo':['A','A','A','B','B','B','C','C','C'],
'bar':[1,2,3,1,2,3,1,2,3],
'vals':np.random.randn(9)})
df.set_index(['foo','bar'], inplace=True)
s = pd.Series(['ham','eggs','cheese'])
我想將該系列添加為一個新列,填充 foo 的每個級別。 誰能指出一種有效的方法來做到這一點?
謝謝
您可以使用get_level_values
通過索引值創建新列,通過foo
值更改Serie
的索引並通過創建的字典map
它們map
到to_dict
:
s.index = ['A','B','C']
print s
A ham
B eggs
C cheese
dtype: object
df['new'] = df.index.get_level_values('foo')
print df
vals new
foo bar
A 1 -2.877779 A
2 -0.661478 A
3 0.705928 A
B 1 -0.358598 B
2 0.731982 B
3 -0.036367 B
C 1 0.588914 C
2 -0.779635 C
3 0.476337 C
df['new'] = df['new'].map(s.to_dict())
print df
vals new
foo bar
A 1 -2.877779 ham
2 -0.661478 ham
3 0.705928 ham
B 1 -0.358598 eggs
2 0.731982 eggs
3 -0.036367 eggs
C 1 0.588914 cheese
2 -0.779635 cheese
3 0.476337 cheese
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.