我有一个数据框,并希望使用索引中的值来创建另一列 例如:
df=pd.DataFrame({'idx1':range(0,5), 'idx2':range(10000,10005), 'value':np.random.randn(5)})
df.set_index(keys=['idx1','idx2'], inplace=True)
print df
value
idx1 idx2
0 10000 -1.470367
1 10001 0.260693
2 10002 -0.732319
3 10003 -0.116977
4 10004 1.106644
我想做这样的事情:
df['idx1_mod']= df['idx1'] + 100
(实际上,我想做更复杂的事情,但基本上我需要索引的值。)
现在我正在尝试重置索引(将索引字段作为列),通过访问列来执行我的计算,然后重新创建索引。我确定我错过了一些明显的东西,但我看起来很乖,并且一直在想它!
注意 - 我也尝试过df.iterrows(),但它似乎提供了该行的副本,并且不允许我更新原始数据帧。
答案 0 :(得分:5)
df["idx1_mod"] = df.index.get_level_values(0).values + 100
答案 1 :(得分:1)
试试这个:
for idx in range(len(df)):
df['idx1_mod'][idx] = df.index[idx][0] + 100
答案 2 :(得分:0)
设置索引以将键保留为列时,可以使用'boo'
。这应该起作用:
drop=False