gpt4 book ai didi

python - 如何合并多维数据框和不同长度的系列?

转载 作者:行者123 更新时间:2023-12-01 01:07:52 27 4
gpt4 key购买 nike

有没有办法合并具有一系列不同长度的多维数据框?组合 df 的方法有很多种。我读过有关加入、串联、附加和合并的内容。我不知道该用哪一个。而且,它们都有许多可选参数,这使得它更难以理解。有人可以澄清文档( https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html ),特别是关于如何合并数据帧和不同长度的系列吗?

例如,我想合并以下多维数据框,

d = {'Name': ['Kitty', 'Harry', 'Bear', 'Sam', 'Max', 'Hunter', 'Fluffy'], 'Favloc': ['couch', 'windowsill', 'bed', 'basket', 'floor', 'carpet', 'haybale'], 'Pet': ['Cat', 'Cat', 'Cat', 'Dog', 'Dog', 'Dog', 'Hamster']}
df = pd.DataFrame(data=d)
df = df.set_index(['Pet', 'Name'])

print (df)
Favloc
Pet Name
Cat Kitty couch
Harry windows
Bear bed
Sam basket
Dog Max floor
Hunter carper

具有以下系列,s1:

s1 = pd.Series([3,3,1], index=['Cat','Dog','Hamster'])

我希望结果是:

                      Favloc
Pet cnts Name
Cat 3 Kitty couch
Harry windows
Bear bed
Sam basket
Dog 3 Max floor
Hunter carper
Hamster 1 Fluffy Haybale

我已经尝试过了

result = df.join(s1)

但这会引发错误:

Cannot join with no level specified and no overlapping names

我知道我没有指定级别,但我不知道如何指定它。我应该说 1 级吗,因为我希望 cnts 位于 1 级索引上? (Favloc 等级为 0?另外,我不明白“没有重叠的名称”,因为猫、狗和仓鼠重叠,对吗?

我也尝试过

result = pd.concat([df, s1])

这导致了我希望在其中看到 cnt 的每一列中都有 NAN 的数据框。

然后我尝试了:

result = pd.merge(df, s1)

我得到了:无法将 DataFrame 与类型的实例合并

我尝试了所有这些,但我不认为这有助于展示我尝试过的所有内容?我想我尝试了很多,因为我真的不明白如何合并多维数据帧和不同长度的系列。

我见过相关的问题,但所有的数据帧都只有一个级别,例如:How to merge a Series and DataFrame那么,如何合并多维数据帧和不同长度的序列?

最佳答案

您可以使用DataFrame.join使用 rename 和参数 on,然后 DataFrame.set_indexDataFrame.reorder_levels :

result = (df.join(s1.rename('cnts'), on='Pet')
.set_index('cnts', append=True)
.reorder_levels([0,2,1]))
print (result)
Favloc
Pet cnts Name
Cat 3 Kitty couch
Harry windows
Bear bed
Sam basket
Dog 3 Max floor
Hunter carper
Hamster 1 Fluffy Haybale

或者使用Index.map :

idx = df.index.get_level_values('Pet').map(s1.rename('cnts').get)
result = df.set_index(idx, append=True).reorder_levels([0,2,1])
print (result)
Favloc
Pet cnts Name
Cat 3 Kitty couch
Harry windows
Bear bed
Sam basket
Dog 3 Max floor
Hunter carper
Hamster 1 Fluffy Haybale

关于python - 如何合并多维数据框和不同长度的系列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55160906/

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