查找特定数字的完整行

时间:2018-03-16 17:50:51

标签: python pandas dataframe

我们有一个包含3列和100000行的txt文件。我们希望找到特定数字的行,例如: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

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

4 个答案:

答案 0 :(得分:4)

这是一种方式。输出是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处理。

答案 1 :(得分:0)

这是纯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

答案 2 :(得分:0)

这可以通过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)

答案 3 :(得分:0)

我看到你在谈论any function而不是总结。您应该调用输出数组的组件。

a=res[1] #the first row is 0
b=res[2]

现在您可以在任何功能中使用它们 h= a+b

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