簡體   English   中英

找到最接近 pandas dataframe 的列

[英]Find closest column to pandas dataframe avg

我有某某pandas dataframe,例如

  A.1 A.2 A.3 A.4 B.1 B.2 B.3
0 1   5   8   10  ... 
1 2   4   6   7   ... 
2 3   3   6   1   ... 

我想按行計算 pandas dataframe 的平均列,僅適用於包含“A”的列,例如:

A.avg
6
4.75
3.25

然后找出'A's的哪一列最接近平均值(最小均方根誤差)並獲取它的列名(這里是A.2)

第一部分非常簡單,但我大部分時間都在努力解決第二部分

編輯:這是我查找最大列 ID 的方法(我有一個子字符串列表(例如 A、B、C 等),我對數據幀執行掃描):

max_id_per_substring = [
            self.table[[column for column in list(self.table) if substring in column]].idxmax(axis=1).iloc[-1]  for substring in self.all_substrings]

在numpy中進行計算最方便,可以使用廣播。 因此,我們首先將所有列如A.轉換為 numpy 數組。 利用廣播對轉置數據進行均值減法,將結果平方並找到總和最小的列號。

import pandas as pd

df = pd.DataFrame({'A.1':[1,2,3], 'A.2':[5,4,3], 'A.3':[8,6,6], 'A.4':[10,7,1], 'B.1':[0,0,0]})

arr = df.filter(like='A.').to_numpy().T
col_number = ((arr - arr.mean(0))**2).sum(1).argmin()

print(df.filter(like='A.').columns[col_number])
#A.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM