这是我的DataFrame:
import pandas as pd
df = pd.DataFrame(
{
'a': [10, 20, 30, 400, 50, 60],
'b': [897, 9, 33, 4, 55, 65]
}
)
字符串
这是我想要的输出,我想创建列c
。
a b c
0 10 897 NaN
1 20 9 897.0
2 30 33 NaN
3 400 4 400.0
4 50 55 NaN
5 60 65 NaN
型
以下是所需的步骤:
a)查找df.a > df.b
的行
B)从上面的行中比较a
的值和b
的前一个值。如果它大于前一个b
的值,则将a
放在c
列中,否则将前一个b
。
举例来说:
a)符合df.a > df.b
的1
和3
B)从行1
中,20小于897,因此选择897。但是在行3
中,400大于33,因此选择它。
这张图片阐明了这一点:
的数据
这是我尝试过的,但它不起作用:
df.loc[df.a > df.b, 'c'] = max(df.a, df.b.shift(1))
型
4条答案
按热度按时间uemypmqf1#
尝试:
字符串
打印:
型
lsmd5eda2#
您可以使用
np.maximum
和Series.shift()
获得具有适当移位的最大值,然后您可以使用np.where()
使用NaN填充其余行:字符串
这将产生:
型
qjp7pelc3#
另一个可能的解决方案:
字符串
输出量:
型
ryhaxcpt4#
验证码
使用面具和滚动
字符串
DF
型