Python 值接近输入值的输出行
如何输出数据帧中的所有行,其值接近我输入的数字Python 值接近输入值的输出行,python,pandas,Python,Pandas,如何输出数据帧中的所有行,其值接近我输入的数字 import pandas as pd data = {'A':[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'B':[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]} df = pd.DataFrame(data, columns=['A', 'B']) 因此,像最近的_值(df,a,B)这样的函数输出指定输入的2行内的行。如果我输入最近的值(df 5,15),它将返回行:
import pandas as pd
data = {'A':[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'B':[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}
df = pd.DataFrame(data, columns=['A', 'B'])
因此,像最近的_值(df,a,B)
这样的函数输出指定输入的2行内的行。如果我输入最近的值(df 5,15),它将返回行:
| A | B |
| -------- | -------- |
| 3 | 13 |
| 4 | 14 |
| 5 | 15 |
| 6 | 16 |
| 7 | 17 |
一种方法是从数据帧中减去值,并与公差进行比较:
def nearest_values(df, A, B, tolerance=2):
return df[(abs(df - [A, B]) <= tolerance).all(axis=1)]
abs(df - [A, B]) <= tolerance
如果行中与公差匹配的任何值可接受,请将all
更改为any
说明:
df - [A, B]
使用减法将搜索值与数据帧进行“比较”:
A B
0 -4 -4
1 -3 -3
2 -2 -2
3 -1 -1
4 0 0
5 1 1
6 2 2
7 3 3
8 4 4
9 5 5
abs
用于将所有负值转换为正值,然后与公差进行比较:
def nearest_values(df, A, B, tolerance=2):
return df[(abs(df - [A, B]) <= tolerance).all(axis=1)]
abs(df - [A, B]) <= tolerance
然后可以对给定行的真实性进行评估。在这种情况下,all(axis=1)
但any(axis=1)
也是一个选项:
(abs(df - [A, B]) <= tolerance).all(axis=1)
这可以用作选择所需行的索引:
完整的工作示例
import pandas as pd
data = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'B': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}
df = pd.DataFrame(data, columns=['A', 'B'])
def nearest_values(df, *cols, tolerance=2):
return df[(abs(df - cols) <= tolerance).all(axis=1)]
print(nearest_values(df, 5, 15))
将熊猫作为pd导入
数据={'A':[1,2,3,4,5,6,7,8,9,10],
‘B’:[11、12、13、14、15、16、17、18、19、20]}
df=pd.DataFrame(数据,列=['A','B'])
def最接近的_值(df,*cols,公差=2):
返回df[(abs(df-cols)一种方法是从数据帧中减去值并与公差进行比较:
def nearest_values(df, A, B, tolerance=2):
return df[(abs(df - [A, B]) <= tolerance).all(axis=1)]
abs(df - [A, B]) <= tolerance
如果行中与公差匹配的任何值可接受,请将all
更改为any
说明:
df - [A, B]
使用减法将搜索值与数据帧进行“比较”:
A B
0 -4 -4
1 -3 -3
2 -2 -2
3 -1 -1
4 0 0
5 1 1
6 2 2
7 3 3
8 4 4
9 5 5
abs
用于将所有负值转换为正值,然后与公差进行比较:
def nearest_values(df, A, B, tolerance=2):
return df[(abs(df - [A, B]) <= tolerance).all(axis=1)]
abs(df - [A, B]) <= tolerance
然后可以对给定行的真实性进行评估。在这种情况下,all(axis=1)
但是any(axis=1)
也是一个选项:
(abs(df - [A, B]) <= tolerance).all(axis=1)
这可以用作选择所需行的索引:
完整的工作示例
import pandas as pd
data = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'B': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]}
df = pd.DataFrame(data, columns=['A', 'B'])
def nearest_values(df, *cols, tolerance=2):
return df[(abs(df - cols) <= tolerance).all(axis=1)]
print(nearest_values(df, 5, 15))
将熊猫作为pd导入
数据={'A':[1,2,3,4,5,6,7,8,9,10],
‘B’:[11、12、13、14、15、16、17、18、19、20]}
df=pd.DataFrame(数据,列=['A','B'])
def最接近的_值(df,*cols,公差=2):
返回df[(abs(df-cols))请从“演示如何解决此编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后询问有关您的算法或技术的特定问题。堆栈溢出不是为了替换现有文档和教程。确定两个值是否“接近”在许多地方都有介绍。在给定条件下过滤数据帧在任何PANDAS教程中都有介绍。您是如何陷入困境的?请重复“演示如何解决此编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后询问有关您的算法或技术的特定问题。堆栈溢出不是为了替换现有文档和教程。确定两个值是否“接近”在很多地方都有介绍。在给定条件下过滤数据帧在任何PANDAS教程中都有介绍。您是如何陷入困境的?