gpt4 book ai didi

python - 将 pandas 多索引 DataFrame 的列替换为另一个 DataFrame

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:25 24 4
gpt4 key购买 nike

我有一个像这样的 pandas DataFrame:

import pandas as pd
import numpy as np

data1 = np.repeat(np.array(range(3), ndmin=2), 3, axis=0)
columns1 = pd.MultiIndex.from_tuples([('foo', 'a'), ('foo', 'b'), ('bar', 'c')])
df1 = pd.DataFrame(data1, columns=columns1)
print(df1)

foo bar
a b c
0 0 1 2
1 0 1 2
2 0 1 2

还有一个这样的:

data2 = np.repeat(np.array(range(3, 5), ndmin=2), 3, axis=0)
columns2 = ['d', 'e']
df2 = pd.DataFrame(data2, columns=columns2)
print(df2)

d e
0 3 4
1 3 4
2 3 4

现在,我想用 df2 替换 df1 的“bar”,但单级索引的常规语法似乎不起作用:

df1['bar'] = df2
print(df1)

foo bar
a b c
0 0 1 NaN
1 0 1 NaN
2 0 1 NaN

当我想要得到的是:

  foo    bar
a b d e
0 0 1 3 4
1 0 1 3 4
2 0 1 3 4

我不确定我是否在语法上遗漏了某些内容,或者这是否与描述的问题有关 herehere 。有人可以解释为什么这不起作用以及如何获得期望的结果吗?

我正在使用 python 2.7 和 pandas 0.24,如果有区别的话。

最佳答案

由于缺乏更好的选择,我目前正在这样做:

df2.columns = pd.MultiIndex.from_product([['bar'], df2.columns])
df1.drop(columns='bar', level=0, inplace=True)
df1 = df1.join(df2)

这给出了期望的结果。但如果列的顺序很重要,则需要谨慎,因为这种方法可能会改变它。

进一步阅读 Github 上提到的问题,我认为问题中的方法不起作用的原因确实与 pandas API 中尚未修复的不一致有关。

关于python - 将 pandas 多索引 DataFrame 的列替换为另一个 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59569943/

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