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

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

Python:從 csv 解析未命名的列

Python:從 csv 解析未命名的列

達(dá)令說 2022-05-24 15:53:05
我想從以前生成的 csv 文件中正確讀取未命名的列。csv 有一個(gè)多索引標(biāo)題,每列具有不同的形狀,例如,第 0 列有一個(gè)坐標(biāo),第 1 列有兩個(gè)坐標(biāo),第 2 列有三個(gè)坐標(biāo)。因此,在讀取完整的 csv 時(shí),未命名的列出現(xiàn)在第 0 列和第 1 列中。我需要找到具有給定值的行,但我無法傳遞正確的列。想象一下 'my.csv' 文件看起來像這樣:C0,C1,C2,C10,C20,,C22-2,0,0.4101-1,1,0.80580,0,0.10001,3,0.3846我嘗試閱讀它:read_df = pd.read_csv('my.csv', header=[0,1,2]) print(read_df)                  C0                 C1      C2  Unnamed: 0_level_1                C10     C20  Unnamed: 0_level_2 Unnamed: 1_level_2     C220                 -2                  0  0.41011                 -1                  1  0.80582                  0                  0  0.10003                  1                  3  0.3846我需要選擇與 C0 值對(duì)應(yīng)的行,但我最終會(huì)出現(xiàn)在 KeyError 或 TypeError 中,如下所示:read_df.loc( read_df[('C0','','')] == 0 )  ## KeyError: ('C0', '', '')read_df.loc( read_df[('C0','0_level_1','0_level_2')] == 0 ) ## KeyError: ('C0', '0_level_1', '0_level_2')read_df.loc( read_df[('C0', 'Unnamed: 0_level_1', 'Unnamed: 0_level_2')] == 0 ) ## TypeError: 'Series' objects are mutable, thus they cannot be hashed一個(gè)轉(zhuǎn)變可能是事先命名列并防止這種情況發(fā)生,但最好了解如何管理它。謝謝PS這是我生成“my.csv”的方式import pandas as pdimport random as rndcol_0 = [('C0', '', '')]col_1 = [('C1', 'C10','')]col_2 = [('C2', 'C20', 'C22')]tot_col = columns=pd.MultiIndex.from_tuples(col_0 + col_1 + col_2)tot_df = pd.DataFrame(columns=tot_col)def get_data():    data_dict = { ('C1','C10','')    : rnd.randint(0,5),                  ('C2','C20','C22') : '{:2.4f}'.format(rnd.random()) }    data_df = pd.DataFrame( [data_dict], columns=tot_col )    return(data_df)for ii in range(-2, 2):    ii_df = get_data()    ii_df[('C0','','')] = ii    tot_df = pd.concat([tot_df, ii_df], ignore_index=True)tot_df.to_csv('my.csv', index=False)
查看完整描述

1 回答

?
瀟湘沐

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

您正在尋找的 IUC


read_df.loc[ read_df[('C0', 'Unnamed: 0_level_1', 'Unnamed: 0_level_2')] == 0 ]

或者干脆


read_df[read_df[('C0', 'Unnamed: 0_level_1', 'Unnamed: 0_level_2')] == 0]

結(jié)果:


                  C0                 C1      C2

  Unnamed: 0_level_1                C10     C20

  Unnamed: 0_level_2 Unnamed: 1_level_2     C22

2                  0                  4  0.2373

恢復(fù)原始索引有點(diǎn)笨拙:

read_df.columns = pd.MultiIndex.from_tuples([tuple('' if y.startswith('Unnamed:') else y for y in x) for x in map(list, read_df.columns.tolist())])

在此之后,您可以照常使用:


read_df[read_df[('C0','','')] == 0]

結(jié)果:


  C0  C1      C2

     C10     C20

             C22

2  0   4  0.2373


查看完整回答
反對(duì) 回復(fù) 2022-05-24
  • 1 回答
  • 0 關(guān)注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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