我想從以前生成的 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)
查看完整描述