2
我無法過濾從基礎數據框與另一個來自具有多個輸出列的groupby之間的合併產生的數據框的列。從與多級別列名稱的合併產生的數據幀上按名稱列過濾
讓我更具體:
1)我建我的 「奇怪」 的數據幀:df_analyzed:
n_elements = 1000;
np.random.seed(1234);
X1 = np.random.randint(10,size=n_elements)*2;
X2 = np.random.normal(size=n_elements);
Y = 4*X1+X2;
df = pd.DataFrame({'X1':X1,'X2':X2,'Y':Y})
df_analyzed = df[['X1','Y']] .groupby('X1').agg([np.count_nonzero,np.mean,np.std]).rename(columns={'count_nonzero':'count','mean':'average'}).reset_index();
2)我建立我的基本數據幀:DF2:
df2 = pd.DataFrame({'X1':np.array(range(10))*2,'Y_true':np.array(range(10))*2*4})
3)然後我合併X1:
df2 = df2.merge(df_analyzed,on='X1', how='inner')
我現在的問題:我如何可以通過名字過濾的列DF2?
該問題處理df_analyzed的多級列名稱,該名稱使用圓括號生成組合名稱。
df2.columns
給出:
指數([ 'X1', 'Y_true_x',( 'X1', ''),( 'Y', '計數'), ('Y 」, '平均'),( 'Y', 'STD'), 'Y_true_y'],D類 = '對象')
的一點是,:
df2[['X1', ('Y', 'average')]]
不起作用,而:
df2[['X1']]
和
df2[[ ('Y', 'average')]]
做的工作。
有什麼竅門?最佳做法是什麼?
感謝,
丹尼斯
謝謝,最終解決問題。這是最佳做法嗎?或者是沒有機會使用類似'df2 [['X1',('Y','average')]]'的列名過濾? – DenisM
我認爲最好的是如果列平坦。 – jezrael
我爲過濾添加解決方案。 – jezrael