gpt4 book ai didi

python - 将函数应用/映射到前一行

转载 作者:行者123 更新时间:2023-11-28 20:04:08 24 4
gpt4 key购买 nike

函数及其应用仍然是新手我想为数据框创建一个新列 D:

 df = pd.DataFrame([[1, 2, 3], [1, 3, 5], [4, 6, 7]], columns=['A', 'B', 'C'])

A B C
0 1 2 3
1 1 3 5
2 4 6 7

D 列及其内容应借助函数创建,我认为是这种方式:

 def my_func(B, C):
if C > B.shift(1):
df['D'] = 'right'
return df['D']
else:
df['D'] = 'left'
return df['D']

简而言之:如果 C 中的值高于上一行中 B 的值,则单元格变为“右”,否则为“左” .我没有让它运行,以某种方式不接受转换或者我收到错误消息

The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

欢迎就如何最好地使用函数完成此类任务以及应用 shift() 提供任何帮助。

编辑:我正在寻找解决方案的“功能版本”,因为这将是一个经常使用的过程。

最佳答案

您可以使用 numpy.where :

df['D'] = np.where(df.C > df.B.shift(), 'left', 'right')
print (df)
A B C D
0 1 2 3 right
1 1 3 5 left
2 4 6 7 left

如果需要功能:

def f(B, C):
df['D'] = np.where(C > B.shift(), 'left', 'right')
return df

print(f(df.B, df.C))
A B C D
0 1 2 3 right
1 1 3 5 left
2 4 6 7 left

或者:

def f(B, C):
df['D'] = np.where(C > B.shift(), 'left', 'right')
return df.D

print(f(df.B, df.C))
0 right
1 left
2 left
Name: D, dtype: object

关于python - 将函数应用/映射到前一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37755429/

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