python - Pandas/Python 检查介于两者之间的值和输出值形成另一列
问题描述
我有以下数据框和一个等于20
. 我需要找到这个变量在 col2 中的位置(这里在 10 到 50 之间)并输出 col1 中的最小值,这里是 2。另一个例子是变量等于51
,col1 的正确输出是3
。
我可以使用 if 公式来做到这一点,但我希望为更大的数据集找到更好的解决方案。
d = {'col1': [1, 2, 3, 4, 5], 'col2': [0, 10, 50, 60, 70]}
df = pd.DataFrame(data=d)
解决方案
使用boolean indexing
withDataFrame.loc
然后通过 获取列col1
的最后一个值Series.iat
:
a = df.loc[df['col2'] <= 20, 'col1'].iat[-1]
print (a)
2
a = df.loc[df['col2'] <= 51, 'col1'].iat[-1]
print (a)
3
a = df.loc[df['col2'] <= 10, 'col1'].iat[-1]
print (a)
2
推荐阅读
- pandas - 在不使用熊猫的情况下将数据框转换为pyspark中的字典
- java - 如何在java中为多级服务类编写junit
- php - 如何通过 json 类型从 laravel 中的表单获取数据 $request
- r - R - 获取相应列但不重复的数据子集
- c# - 使用 TypeNameHandeling 反序列化 DateTime 失败 - 日期被初始化为默认 dateTime 值 - C#
- verilog - 在 systemverilog 中获取接口的大小
- python - 外键关系中的多个过滤器参数与reduce函数
- python - 将 .py 转换为 .exe - 无 os 模块
- python - 处理具有不同模式的数据
- java - 当我单击某些意图时,Android App Force Close