我有一个熊猫数据框,看起来像这样:
import pandas as pd
import numpy as np
arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
df = pd.DataFrame(np.random.randn(8,4),index=arrays,columns=['A','B','C','D'])
我想添加一个列E
,这样df.loc[(slice(None),'one'),'E'] = 1
和df.loc[(slice(None),'two'),'E'] = 2
,我不想在['one', 'two']
上迭代。我尝试了以下方法:
df.loc[(slice(None),slice('one','two')),'E'] = pd.Series([1,2],index=['one','two'])
但它只是添加了一列E
和NaN
。正确的方法是什么?你知道吗
您可以从
df.index.labels
获取:输出:
借助coldspeed,如果需要不同的值(即
x
和y
),请使用:我认为这是
Index.map
的一个很好的用例:这里有一个方法
reindex
相关问题 更多 >
编程相关推荐