gpt4 book ai didi

python - 尝试使用另一个不同结构的数据帧中的值填充数据帧中的列

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

我有这两个数据框,orig_df 和 another_df。

orig_df:

year    colour      result

2004 red NaN
2004 yellow NaN
2005 yellow NaN
2005 green NaN

另一个_df:

            red     yellow  green   blue

2004 1.2 2.5 1.6 1.9
2005 1.8 NaN 1.7 2.0
2006 NaN 2.2 1.9 1.5
2007 1.0 NaN NaN 0.8

我想做的是用 another_df 中的值填充 orig_df 中的结果列。具体来说,在年份为 2005 年且颜色为绿色的 orig_df 行中,我想放置来自 another_df 的相应值,其中该行的年份为 2005 年,列为绿色(在此例中)案例值 1.7)我能想到的解决这个问题的唯一方法是使用 loc[index, column] 并传递来自 orig_df 的值来访问 another_df 中的各个值。 code> 到它,但它没有像我预期的那样工作。

例如,做这样的事情就很好了:

orig_df['result'] = orig_df.year

最终结果如下所示:

year    colour      result

2004 red 2004
2004 yellow 2004
2005 yellow 2005
2005 green 2005

这也有效:

orig_df['result'] = orig_df.colour

在这两种情况下,它都会从同一行获取正确的值并填充所有内容,不会出现任何问题。

但是当我尝试这样做时:

orig_df['result'] = another_df.loc[orig_df.year, orig_df.colour]

一切 hell 都崩溃了。我相信正在发生的事情是,orig_df.year 现在不再只包含当前行的年份值,而是同时包含 orig_df 列“year”中包含的所有值。我知道我可能把事情复杂化了,但我不知道如何解决这个问题。任何帮助将非常感激。谢谢!

最佳答案

我认为你需要首先通过stack reshape 对于带有 MultiIndexSeries,然后 join对于按年份颜色划分的新列:

s = another_df.stack().rename('result')
print (s)
2004 red 1.2
yellow 2.5
green 1.6
blue 1.9
2005 red 1.8
green 1.7
blue 2.0
2006 yellow 2.2
green 1.9
blue 1.5
2007 red 1.0
blue 0.8
Name: result, dtype: float64

#if thre is column result first remove it
df = orig_df.drop('result', axis=1).join(s, on=['year','colour'])
print (df)
year colour result
0 2004 red 1.2
1 2004 yellow 2.5
2 2005 yellow NaN
3 2005 green 1.7

关于python - 尝试使用另一个不同结构的数据帧中的值填充数据帧中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47593883/

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