从正在读取的文本文件中删除或删除标题 - python

我正在尝试删除或删除使用熊猫读取的数据标题。一个文件有标题,而另一个没有,但是我希望能够检查标题然后将其删除。

到目前为止,我已经尝试在read_csv函数中使用header = None

from pathlib import Path
import pandas as pd

def _reader(fname):
    return pd.read_csv(fname, sep="\t", header=None)

folder = Path("C:\\Me\\Project1")
data = pd.concat([
    _reader(txt)
    for txt in folder.glob("*.txt")
])

我收到以下错误:
TypeError:必须为str,而不是int

我的两个文件如下所示:

File1.txt

ISIN    AVL_QTY
BAD 90000
AAB 8550000
BAD 173688
BAD 360000
BAD 90000
BAD 810000
BAD 900000
BAD 900000

File2.txt

TEST  543
HELLO 555
STOCK 900
CODE  785

参考方案

首先,您需要检查第一行是否为标题。例如。您可以检查第一行的任何条目是否均以数字开头,因为这对于列标题而言并不常见。
实际上,在不知道成千上万个文件的情况下,正确的标头检测方法只是猜测-但这并不是代码中的重点。

要使用标头检测,您应该使用普通循环而不是列表推导,以便您可以在每次迭代中:1.检查标头2.读取文件并将数据附加到数据框:

df = pd.DataFrame()

for f in folder.glob("*.txt"):
    with open(f) as fin:
        chk_lst = next(fin).split()
    is_h = not any(v[0].isdecimal() for v in chk_lst)
    df = pd.concat([df, pd.read_csv(f, sep='\s+', header=(None, 0)[is_h])], axis=1)

# ISIN  AVL_QTY      0        1
# 0  BAD    90000   TEST  543.775                             
# 1  AAB  8550000  HELLO  555.000                           
# 2  BAD   173688  STOCK  900.000                         
# 3  BAD   360000   CODE  785.000                         
# 4  BAD    90000    NaN      NaN                        
# 5  BAD   810000    NaN      NaN                         
# 6  BAD   900000    NaN      NaN                         
# 7  BAD   900000    NaN      NaN                

编辑:
对于级联,您可以使用

    df = pd.concat([df, pd.read_csv(f, sep='\s+', header=None, skiprows=(0, 1)[is_h])], axis=0, ignore_index=True)

#        0        1
# 0    BAD    90000                                     
# 1    AAB  8550000                                      
# 2    BAD   173688                                         
# 3    BAD   360000                                      
# 4    BAD    90000                                        
# 5    BAD   810000                                        
# 6    BAD   900000                                    
# 7    BAD   900000                                    
# 8   TEST      543                                       
# 9  HELLO      555                                      
# 10 STOCK      900                                       
# 11  CODE      785                              

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Python:集群作业管理 - python

我在具有两个阶段的计算群集(Slurm)上运行python脚本,它们是顺序的。我编写了两个python脚本,一个用于阶段1,另一个用于阶段2。每天早上,我检查所有第1阶段的工作是否都以视觉方式完成。只有这样,我才开始第二阶段。通过在单个python脚本中组合所有阶段和作业管理,是否有一种更优雅/自动化的方法?我如何知道工作是否完成?工作流程类似于以下内容:w…

Python:如何根据另一列元素明智地查找一列中的空单元格计数? - python

df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…