我们有一个包含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
。
请注意:我们不知道提到的数字是哪一行。我们想要搜索文件,找到那个数字及其完整的行,并在计算中使用找到的行的组件。
答案 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
此解决方案基于此问题的选定答案。