gpt4 book ai didi

python - 将多索引与 Pandas 中的单索引数据框合并

转载 作者:IT老高 更新时间:2023-10-28 21:11:22 26 4
gpt4 key购买 nike

我有两个数据框。 df1 是多索引的:

                value
first second
a x 0.471780
y 0.774908
z 0.563634
b x -0.353756
y 0.368062
z -1.721840

和df2:

      value
first
a 10
b 20

如何仅将两个数据框与一个多索引(在本例中为“第一个”索引)合并?期望的输出是:

                value1      value2
first second
a x 0.471780 10
y 0.774908 10
z 0.563634 10
b x -0.353756 20
y 0.368062 20
z -1.721840 20

最佳答案

您可以使用 get_level_values :

firsts = df1.index.get_level_values('first')
df1['value2'] = df2.loc[firsts].values

注意:您几乎在做 join这里(除了 df1 是 MultiIndex)...所以可能有一种更简洁的方式来描述这个...

.

在一个例子中(类似于你所拥有的):

df1 = pd.DataFrame([['a', 'x', 0.123], ['a','x', 0.234],
['a', 'y', 0.451], ['b', 'x', 0.453]],
columns=['first', 'second', 'value1']
).set_index(['first', 'second'])
df2 = pd.DataFrame([['a', 10],['b', 20]],
columns=['first', 'value']).set_index(['first'])

firsts = df1.index.get_level_values('first')
df1['value2'] = df2.loc[firsts].values

In [5]: df1
Out[5]:
value1 value2
first second
a x 0.123 10
x 0.234 10
y 0.451 10
b x 0.453 20

关于python - 将多索引与 Pandas 中的单索引数据框合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14149156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com