Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 使用pandas读取.txt文件,并根据一列中的某个范围对其进行切片_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 使用pandas读取.txt文件,并根据一列中的某个范围对其进行切片

Python 使用pandas读取.txt文件,并根据一列中的某个范围对其进行切片,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有多个.txt文件,其中充满了垃圾数据,根据文件之间的变化范围,我只需要其中的一部分。我仍在学习Python,经验不多 我使用的是VS代码1.50和Python 3.8.1 我的数据样本: 我的第一个问题是读取.txt文件,以下是我最初做的: import pandas as pd import os #Reading my data Data = pd.read_csv('Data_01.txt') 我不明白为什么它会给出一个错误,即使python脚本与.txt文件在同一个文件夹中 错误

我有多个.txt文件,其中充满了垃圾数据,根据文件之间的变化范围,我只需要其中的一部分。我仍在学习Python,经验不多

我使用的是VS代码1.50和Python 3.8.1

我的数据样本:

我的第一个问题是读取.txt文件,以下是我最初做的:

import pandas as pd
import os

#Reading my data
Data = pd.read_csv('Data_01.txt')
我不明白为什么它会给出一个错误,即使python脚本与.txt文件在同一个文件夹中

错误:

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-28-436477220532> in <module>
      3 
      4 #Reading my data
----> 5 Data = pd.read_csv("Data_01.txt", sep="\t", names=["Depth", "Porosity"])

~\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)
    684     )
    685 
--> 686     return _read(filepath_or_buffer, kwds)
    687 
    688 

~\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds)
    450 
    451     # Create the parser.
--> 452     parser = TextFileReader(fp_or_buf, **kwds)
    453 
    454     if chunksize or iterator:

~\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py in __init__(self, f, engine, **kwds)
    934             self.options["has_index_names"] = kwds["has_index_names"]
    935 
--> 936         self._make_engine(self.engine)
    937 
    938     def close(self):

~\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py in _make_engine(self, engine)
   1166     def _make_engine(self, engine="c"):
   1167         if engine == "c":
-> 1168             self._engine = CParserWrapper(self.f, **self.options)
   1169         else:
   1170             if engine == "python":

~\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\parsers.py in __init__(self, src, **kwds)
   1996         kwds["usecols"] = self.usecols
   1997 
-> 1998         self._reader = parsers.TextReader(src, **kwds)
   1999         self.unnamed_cols = self._reader.unnamed_cols
   2000 

pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()

pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._setup_parser_source()

FileNotFoundError: [Errno 2] No such file or directory: 'Data_01.txt'
现在,在切片数据时,我不想使用索引,即“iloc”和“loc”,以保持代码可读性和易于操作,并重新应用于其他文件,也许可以使用for循环在一次运行中扫描所有文件。因此,我首先使用以下方法进行测试:

Data_result_1 = Data[Data['Depth'] >= 7711]
但是,这是可行的,我希望在同一行中使用一个附加条件,它在深度=7786处停止,即我的范围。但它不起作用,以下是我编写的失败代码:

Data_result_1 = Data[Data['Depth'] >= 7711 and Data['Depth'] <= 7786]
Data\u result\u 1=Data[Data['Depth']>=7711和Data['Depth']=7711]

Data_result_1=Data_result_1[Data_result_1['Depth']您应该使用&而不是and:

Data_result_1 = Data[ (Data['Depth'] >= 7711) & (Data['Depth'] <= 7786)]

Data\u result\u 1=Data[(数据['Depth']>=7711)和(数据['Depth']这正是我想要的第二部分,谢谢!你能给我发送文本文件,以便我也能为你的第一部分提供帮助吗?是的,请:Dropbox链接:或者:我用VS代码和熊猫3.8.5检查了它,它工作得很好。如果文件在同一个文件夹中,你有问题就很奇怪了。你能检查一下你是否有同样的问题吗jupyter笔记本?
Data_result_1 = Data[Data['Depth'] >= 7711 ] 
Data_result_1 = Data_result_1[Data_result_1['Depth'] <= 7786]
Data_result_1 = Data[ (Data['Depth'] >= 7711) & (Data['Depth'] <= 7786)]