Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建列表列表以对文本文件中的数据进行排序_Python_Python 3.x - Fatal编程技术网

Python 创建列表列表以对文本文件中的数据进行排序

Python 创建列表列表以对文本文件中的数据进行排序,python,python-3.x,Python,Python 3.x,我试图从分子动力学模拟中读取和分析数据,看起来像这样,但有大约50000行: 40 443.217134221125 -1167.16960983145 -930.540717277902 -945.149746592058 14.6090293141563 -76510.1177229871 4955.17798368798 17.0485096390963 17.0485096390963 17.0485096390963 80 659.39103652059 -923.6389163694

我试图从分子动力学模拟中读取和分析数据,看起来像这样,但有大约50000行:

40 443.217134221125 -1167.16960983145 -930.540717277902 -945.149746592058 14.6090293141563 -76510.1177229871 4955.17798368798 17.0485096390963 17.0485096390963 17.0485096390963
80 659.39103652059 -923.638916369481 -963.088128935875 -984.822539088925 21.7344101530497 14390.2520385682 4392.18167603894 16.3767140226773 16.3767140226773 16.3767140226773
120 410.282687399253 -979.413482414461 -978.270613122515 -991.794079036891 13.5234659143754 -416.30808174241 4398.37322990079 16.3844056974088 16.3844056974088 16.3844056974088
第二列表示温度。我想把文件的全部内容放在一个列表中,包含根据温度划分每一行的列表。例如,主列表中的第一个列表将包含温度为50+/-25K的每一行,主列表中的第二个列表将包含温度为100+/-25K的每一行,第三个列表将包含温度为150+/-25K的每一行,以此类推。
以下是我目前掌握的代码:

对于tqdm中的nbligne(范围(0,len(LogFullText),1),unit=“lignes”,disable=False):
字符串=日志全文[nbligne]
行=字符串。替换('\n','')
值=行分割(“”)
除法器=浮点(值[1])
数字=整数(圆形(除法器/ecart,0))
如果编号>0且编号<(nbpts+1):
数值=[]
对于范围(0,len(值)-1,1)内的nbresultat:
numericValues=numericValues+[float(值[nbresultat+1])]
TotalResults[number-1]。追加(numericValues)
包含数据的整个文档存储在列表LogFullText中,在该列表中,我删除结尾处的\n并使用line.split(“”)拆分数据,然后我知道在主列表的哪个“部分”TotalResults中,必须使用变量编号存储数据行,在我的示例中,ecart的值为50

从我在idle中的测试来看,这应该是可行的,但实际上发生了什么,列表numericValues被附加到TotalResults的每个部分,这使得整个“排序”过程毫无意义,因为我的结果是nbpts乘以相同的列表

编辑:例如,所需的输出将使TotalResults[0]仅包含以下行:

440 49.9911561170447 -1002.727121613 -1002.72088094757 -1004.36865629012 1.64777534254374 -2.30045369926927 4346.38067015602 16.319590369315 16.319590369315 16.319590369315
480 42.0678318129411 -1002.69068695093 -1003.09270361295 -1004.47931559314 1.38661198019398 148.219667654185 4345.58826561836 16.3185985476593 16.3185985476593 16.3185985476593
520 43.0855216044083 -1003.4761833678 -1003.33820025832 -1004.75835665467 1.42015639634654 -50.877194096845 4345.23364199522 16.3181546401367 16.3181546401367 16.3181546401367
而TotalResults[1]将包含以下内容:

29480 109.504432929553 -980.560226069922 -998.958927113452 -1002.5683396275 3.6094125140473 6797.60091557441 4336.52501942717 16.3072458525354 16.3072458525354 16.3072458525354
29520 106.663291994583 -987.853629557979 -998.63436605413 -1002.15013076443 3.51576471029626 3975.43407740646 4344.84444478408 16.3176674266037 16.3176674266037 16.3176674266037
29560 112.712019757891 -1020.65735849343 -998.342638324154 -1002.05777718853 3.71513886437272 -8172.25412368794 4374.81748831773 16.3551041162317 16.3551041162317 16.3551041162317
总结果[2]将是:

52480 142.86322849701 -983.254970494784 -995.977110177167 -1000.68607319299 4.70896301582636 4687.60299340191 4348.30194824999 16.321994657312 16.321994657312 16.321994657312
52520 159.953459288754 -984.221801201968 -995.711657311665 -1000.9839371836 5.27227987193358 4233.04866428826 4348.82254074761 16.3226460049712 16.3226460049712 16.3226460049712
52560 161.624843851124 -1011.76969126636 -995.320907086768 -1000.64827802848 5.32737094170867 -6023.57133443538 4375.12133631739 16.3554827492176 16.3554827492176 16.3554827492176
在第一种情况下

TotalResultats[0][0] = [49.9911561170447, -1002.727121613, -1002.72088094757, -1004.36865629012, 1.64777534254374, -2.30045369926927, 4346.38067015602, 16.319590369315, 16.319590369315, 16.319590369315]
如果有帮助的话,我将在VisualStudio中使用python 3.6.8编写此代码


非常感谢

我建议使用熊猫。它是python中处理表格数据的强大工具。它就像python中的excel或sql。假设
1.csv
包含您在问题中提供的数据。然后,您可以轻松加载数据、过滤数据并保存结果:

import pandas as pd

# load data from file into pandas dataframe
df = pd.read_csv('1.csv', header=None, delimiter=' ')

# filter by temperature, column named 0 since there is no header in the file
df2 = df[df[0].between(450, 550)]

# save filtered rows in the same format
df2.to_csv('2.csv', header=None, index=False, sep=' ')

Pandas可能比普通的python语法更难学习,但它非常值得。

你能根据给定的输入添加一个所需输出的示例吗?就是这样!很抱歉没有早点把它包括进来!谢谢你的回答,我会调查的!我之所以想将数据保存在列表中,是为了用numpy对它们进行数学测试,熊猫也可以这样做吗?谢谢@AntoineR Pandas基于NumPy。例如,
df2.values
-是数组的numpy数组。这是2d数组。@AntoineR您可以轻松地(几乎?)将任何numpy函数应用于熊猫数据帧/系列。但是,您通常不需要这样做,因为pandas为您做了这件事-
np.sum(dataframe)
datarfame.sum()
都是一样的。我实现了pandas,它的效果非常好!它完美地完成了我想做的,而且速度更快,非常感谢您的帮助!