我试图在一列中比较浮点值;我需要一个不会产生错误的函数...
函数e应循环遍历列,并将列中的每个值与前一个值以及下一个值进行比较,然后创建一个所有行都符合条件的新DF。
我尝试了for循环和if语句的组合,但我无法找出不产生错误的代码。
范例:
如果col 1的值高于col 1的前一个值并且同时低于下一个值,则条件=真; all within col 1如果col 1的值低于col 1的前一个值,同时又高于下一个值,则条件也为真
第一个和最后一个值将产生错误,因此应该将它们分别与名为compare_first和compare_last的变量进行比较,我将手动定义这两个变量
values = [[5.5, 2.5, 10.0], [2.0, 4.5, 1.0], [2.5, 5.2, 8.0],
[4.5, 5.8, 4.8], [4.6, 6.3, 9.6], [4.1, 6.4, 9.0],
[5.1, 2.3, 11.1]]
# creating a pandas dataframe
a_df = pd.DataFrame(values, columns=['col1', 'col2', 'col3'],
index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
print(a_df)
输出功率
col1 col2 col3
a 5.5 2.5 10.0
b 2.0 4.5 1.0
c 2.5 5.2 8.0
d 4.5 5.8 4.8
e 4.6 6.3 9.6
f 4.1 6.4 9.0
g 5.1 2.3 11.1
所需的输出-将符合所述条件的所有行作为新df
col1 col2 col3
b 2.0 4.5 1.0
e 4.6 6.3 9.6
f 4.1 6.4 9.0
1条答案
按热度按时间qpgpyjmq1#
将较大的上一个或下一个值的移位值与
DataFrame.shift
进行比较,并按&
对AND
进行链掩码,最后使用DataFrame.any
测试每行至少有一个True
(匹配):解自评论,谢谢@mozway: