Python 查找特定编号的完整行

Python 查找特定编号的完整行,python,pandas,dataframe,Python,Pandas,Dataframe,我们有一个txt文件,它包含3列和100000行。我们希望找到特定编号的行,例如:1.232422567,它位于第一列,但不知道其行数。 例如,请看以下示例: ... 5.98735973963 4.3453 1.09877345 6.21376876 5.78789 2.11255 1.232422567 0.009044 9.886778893 0.1213445 0.938763 8.9978444 ... 我们想调用1.2

我们有一个txt文件,它包含3列和100000行。我们希望找到特定编号的行,例如:
1.232422567
,它位于第一列,但不知道其行数。 例如,请看以下示例:

...
5.98735973963    4.3453     1.09877345
6.21376876       5.78789    2.11255
1.232422567      0.009044   9.886778893
0.1213445        0.938763   8.9978444
...
我们想调用
1.232422567
,查看它的完整行

1.232422567      0.009044   9.886778893
在计算中使用,例如在
h=a+b
中,其中
h=0.009044+9.886778893


请注意:我们不知道提到的数字是在哪一行。我们希望搜索该文件,找到该数字及其完整的行,并在计算中使用找到的行的组件。

这是一种方法。输出是一个
numpy
数组

import pandas as pd
from io import StringIO

mystr = """5.98735973963    4.3453     1.09877345
6.21376876       5.78789    2.11255
1.232422567      0.009044   9.886778893
0.1213445        0.938763   8.9978444"""

# Replace below with pd.read_table('my_file.txt', header=None, sep='\s+')
df = pd.read_csv(StringIO(mystr), delim_whitespace=True, header=None)

res = df[df[0] == 1.232422567].values[0]

# array([  1.23242257e+00,   9.04400000e-03,   9.88677889e+00])
然后要应用
h=a+b
,您可以方便地使用
numpy

h = np.sum(res[1:])
或者,如果您想要列表:

res = df[df[0] == 1.232422567].values[0].tolist()

# [1.232422567, 0.009044, 9.886778892999999]

到浮动的转换由
pandas

处理,这是一种方法。输出是一个
numpy
数组

import pandas as pd
from io import StringIO

mystr = """5.98735973963    4.3453     1.09877345
6.21376876       5.78789    2.11255
1.232422567      0.009044   9.886778893
0.1213445        0.938763   8.9978444"""

# Replace below with pd.read_table('my_file.txt', header=None, sep='\s+')
df = pd.read_csv(StringIO(mystr), delim_whitespace=True, header=None)

res = df[df[0] == 1.232422567].values[0]

# array([  1.23242257e+00,   9.04400000e-03,   9.88677889e+00])
然后要应用
h=a+b
,您可以方便地使用
numpy

h = np.sum(res[1:])
或者,如果您想要列表:

res = df[df[0] == 1.232422567].values[0].tolist()

# [1.232422567, 0.009044, 9.886778892999999]

到浮点的转换由
pandas

处理,这是纯python中的一种方法

file_path = "numbers.txt"
number = 1.232422567

number_str = str(number)
with open(file_path) as f:
    for i, line in enumerate(f):
        numbers = line.split()
        if number_str in numbers:
            print("{} is in line {}: {}".format(number_str, i, line))
            break

这是纯python中的一种方法

file_path = "numbers.txt"
number = 1.232422567

number_str = str(number)
with open(file_path) as f:
    for i, line in enumerate(f):
        numbers = line.split()
        if number_str in numbers:
            print("{} is in line {}: {}".format(number_str, i, line))
            break

这可以通过python中的
pandas
库实现。这是您的示例代码

import pandas as pd
data = pd.read_csv('filenane.txt', sep=" ", header=None)
data.columns = ["a", "b", "c"]
foundColmn = data[data['a']==1.232422567][['b','c']]
print(foundColmn)

这可以通过python中的
pandas
库实现。这是您的示例代码

import pandas as pd
data = pd.read_csv('filenane.txt', sep=" ", header=None)
data.columns = ["a", "b", "c"]
foundColmn = data[data['a']==1.232422567][['b','c']]
print(foundColmn)

我知道你说的是
任何函数
,而不是求和。您应该调用输出数组的组件

a=res[1] #the first row is 0
b=res[2]
现在,您可以在任何函数中使用它们
h=a+b


此解决方案基于此问题的选定答案。

我知道您所说的是
任何函数
,而不是求和。您应该调用输出数组的组件

a=res[1] #the first row is 0
b=res[2]
现在,您可以在任何函数中使用它们
h=a+b


此解决方案基于此问题的选定答案。

使用
df=pd.read_table('my_file.txt',header=None,sep='\s+')
可能与OP的情况更相关,而不是使用
StringIO
方法的
read_csv
谢谢,但
h=a+b
是一个例子,我想把
a
b
分开。在任何函数中使用它,而不仅仅是求和使用
df=pd.read_table('my_file.txt',header=None,sep='\s+')
可能与OP的情况更相关,而不是使用
StringIO
方法的
read_csv
,谢谢,但
h=a+b
就是一个例子,我想把
a
b
分开。并在任何功能中使用它,而不仅仅是summation@DeliriousLettuce你是完全正确的,我不确定它是否需要在那里,或者只是碰巧在这个例子中,数字正好在第一个colum@DeliriousLettuce你完全正确,我不确定它是否需要在那里,或者恰好在示例中,数字恰好位于它给出的第一列,ValueError:Length mismatch:Expected axis有1个元素,新值有3个元素elements@Bob这意味着您的文本文件只有一列。你可以用它
data.columns=[“a”]
它给出了,ValueError:长度不匹配:预期的轴有1个元素,新的值有3个元素elements@Bob这意味着您的文本文件只有一列。你可以用它
data.columns=[“a”]