gpt4 book ai didi

python - 使用基于其他列的多个查找向 Pandas DataFrame 添加一列

转载 作者:行者123 更新时间:2023-12-05 04:40:04 25 4
gpt4 key购买 nike

我正在尝试向 DataFrame 添加一列 (col5),如下所示,其中 col5 中的值需要是 col4 中满足某些条件的值同一行的另一列。例如,在 col5 的第 1 行,我想要一个来自 col4 的值,这样 col1 和 col2 的值与第 1 行相同,但是col3 中的值是 != row1 中的值。在 excel 中,这可以使用图中所示的 sumifs 来完成。任何帮助表示赞赏。 Image shown in the link below我已经根据 Paul 的回答更新了我的问题。

df=pd.DataFrame({"col1":[1,1,1,1,2,2,2,2], "col2":['a','a','b', 'b','c', 'c', 'd', 'd'], "col3":['p','q','p', 'q', 'p','q','p', 'q'], 'col4':[100,200,300,400,500,600,700,800]})

我想要完成的是像下面这样添加一个 col5 来检查其他列的条件,其中 col1col2 应该是相同,但 col3 不匹配。假设 col3 将只有两个不同的值,那么说 col3 不匹配意味着 col3 应该有另一个值。

df2 = df

df['col5'] = df[(df.col1 == df2.col1) & (df.col2 == df2.col2) & (df.col3 != df2.col3)].col4

df

>>>

col1 col2 col3 col4 col5
0 1 a p 100 NaN
1 1 a q 200 NaN
2 1 b p 300 NaN
3 1 b q 400 NaN
4 2 c p 500 NaN
5 2 c q 600 NaN
6 2 d p 700 NaN
7 2 d q 800 NaN

当我运行它时,我在 col5 中得到所有 NaN,如上所示。

我想要得到的是如下。这里的安排似乎很简单,就像从下一行或上一行获取一样,但在扩展数据中,它可以在任何行。

>>>

col1 col2 col3 col4 col5
0 1 a p 100 200
1 1 a q 200 100
2 1 b p 300 400
3 1 b q 400 300
4 2 c p 500 600
5 2 c q 600 500
6 2 d p 700 800
7 2 d q 800 700

最佳答案

你的问题对我来说不是很清楚,但我的理解是:检查 col1 和 col2 是否与下一行相同,但 col3 不同。

如果是:抓取下一行col4的值作为col5。

df=pd.DataFrame({"col1":[1,1,1,1,2,2,2,2], "col2":['a','a','b', 'b','c', 'c', 'd', 'd'], "col3":['p','q','p', 'q', 'p','q','p', 'q'], 'col4':[100,200,300,400,500,600,700,800]})

df2 = df.shift(-1)
df['col5'] = df2[(df.col1 == df2.col1) & (df.col2 == df2.col2) & (df.col3 != df2.col3)].col4

df
        col1    col2    col3    col4    col5
0 1 a p 100 200.0
1 1 a q 200 NaN
2 1 b p 300 400.0
3 1 b q 400 NaN
4 2 c p 500 600.0
5 2 c q 600 NaN
6 2 d p 700 800.0
7 2 d q 800 NaN

更新

如果您还想找到其他值,请使用apply:

df['col5'] = df.apply(
lambda x: df[
(df.col1 == x.col1) &
(df.col2 == x.col2) &
(df.col3 != x.col3)
].reset_index()['col4'],
axis=1)

这是遍历行的更好方法。

关于python - 使用基于其他列的多个查找向 Pandas DataFrame 添加一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70345537/

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