第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從正在讀入的文本文件中刪除或移除標(biāo)題

從正在讀入的文本文件中刪除或移除標(biāo)題

MMTTMM 2021-12-21 10:38:14
我正在嘗試刪除或刪除我正在使用 Pandas 讀取的數(shù)據(jù)的標(biāo)題。一個(gè)文件有一個(gè)標(biāo)題,另一個(gè)沒(méi)有,但我希望能夠檢查標(biāo)題然后將其刪除。到目前為止,我已經(jīng)嘗試在 read_csv 函數(shù)中使用 header=Nonefrom pathlib import Pathimport pandas as pddef _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")])我收到以下錯(cuò)誤:TypeError: must be str, not int我的兩個(gè)文件如下所示:文件1.txtISIN    AVL_QTYBAD 90000AAB 8550000BAD 173688BAD 360000BAD 90000BAD 810000BAD 900000BAD 900000文件2.txtTEST  543HELLO 555STOCK 900CODE  785
查看完整描述

3 回答

?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊

首先,您需要檢查第一行是否是標(biāo)題。例如,您可以檢查第一行的任何條目是否以數(shù)字開(kāi)頭,因?yàn)檫@對(duì)于列標(biāo)題來(lái)說(shuō)不是典型的。事實(shí)上,在不知道您的數(shù)千個(gè)文件的情況下,正確的標(biāo)頭檢測(cè)方法只是猜測(cè) - 但這并不是您代碼中的真正重點(diǎn)。


要使用標(biāo)頭檢測(cè),您應(yīng)該使用普通循環(huán)而不是列表解析,以便您可以在每次迭代中: 1. 檢查標(biāo)頭 2. 讀取文件并將數(shù)據(jù)附加到數(shù)據(jù)幀:


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                   


查看完整回答
反對(duì) 回復(fù) 2021-12-21
?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊

File2.txt沒(méi)有標(biāo)題,對(duì)吧?但在_reader你設(shè)置headerNone. 將標(biāo)題添加到 File2.txt,看看會(huì)發(fā)生什么。


查看完整回答
反對(duì) 回復(fù) 2021-12-21
?
慕雪6442864

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

有幾種方法可以檢查 csv 文件是否有標(biāo)題


使用 csv 庫(kù)


import csv

with open('example.csv', 'rb') as csvfile:

    sniffer = csv.Sniffer()

    has_header = sniffer.has_header(csvfile.read(2048))

    csvfile.seek(0)

    # ...


或者如果你知道你的數(shù)據(jù),檢查第一行是否有任何數(shù)字


is_header = not any(cell.isdigit() for cell in csv_table[0])


或使用熊貓本身,如果您知道標(biāo)題可能會(huì)被稱(chēng)為什么


df = (pd.read_csv(filename, header=None, names=cols)

      [lambda x: np.ones(len(x)).astype(bool)

                 if (x.iloc[0] != cols).all()

                 else np.concatenate([[False], np.ones(len(x)-1).astype(bool)])]

    )


當(dāng)然,如果你想先用命令行預(yù)處理文件,它可能會(huì)更快......


查看完整回答
反對(duì) 回復(fù) 2021-12-21
  • 3 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)