pandas dataframe - столбцы с выбранной стартовой строкой и указанными столбцами - PullRequest
0 голосов
/ 02 октября 2018

В приведенном ниже кадре данных я хотел бы очистить счетчики (например, MEM_TRANS_RETIRED) и добавить к кадру данных столбцы load,rps,th95

       load        rps     th95    energy     ...       MEM_TRANS_RETIRED-34  PERF_COUNT_HW_CACHE_L1D-34  PERF_COUNT_HW_CACHE_L1I-34     map_freq
0    500.0k  346222.62    12.62   7270.22     ...                  154287.14                   591053.74                2.918521e+07   6C-1.70GHz
1    400.0k  402628.34     2.25  12026.40     ...                  189915.07                   627043.91                2.867945e+07  10C-2.10GHz
2    500.0k  283508.27    15.52   5662.74     ...                  140790.31                  1431892.98                4.253950e+07   6C-1.30GHz

вот как я это делаю

self.unique_counters = [x[:-2] for x in self.dfile_keys[6:] if x.endswith('-0')]
for counter in self.unique_counters:
 new = self.dfile.loc[:, self.dfile.columns.str.startswith(counter)]

Это, однако, дает только выбранные столбцы без дополнительных столбцов, упомянутых выше.

     PERF_COUNT_HW_CPU_CYCLES-0  PERF_COUNT_HW_CPU_CYCLES-2             ...               PERF_COUNT_HW_CPU_CYCLES-32  PERF_COUNT_HW_CPU_CYCLES-34
0                  6.020913e+08                6.021277e+08             ...                              5.109342e+06                 2.556039e+06
1                  4.781879e+08                4.783621e+08             ...                              3.095814e+06                 2.795868e+06
2                  4.841784e+08                4.844846e+08             ...                              2.389396e+06                 5.550159e+06

Как получить счетчик с выбранной стартовой строкой и некоторыми указанными столбцами?ожидаемый выход

       load        rps     th95    energy   PERF_COUNT_HW_CPU_CYCLES-0  PERF_COUNT_HW_CPU_CYCLES-2             ...               PERF_COUNT_HW_CPU_CYCLES-32  PERF_COUNT_HW_CPU_CYCLES-34
0    500.0k  346222.62    12.62   7270.22   6.020913e+08                6.021277e+08             ...                              5.109342e+06                 2.556039e+06
1    400.0k  402628.34     2.25  12026.40   4.781879e+08                4.783621e+08             ...                              3.095814e+06                 2.795868e+06
2    500.0k  283508.27    15.52   5662.74   4.841784e+08                4.844846e+08             ...                              2.389396e+06                 5.550159e+06

1 Ответ

0 голосов
/ 02 октября 2018

Я полагаю, что вам нужно для одного нового DataFrame:

L = [x[:-2] for x in self.dfile_keys[6:] if x.endswith('-0')]

new = self.dfile.loc[:, self.dfile.columns.str.startswith(tuple(L))]

df = pd.concat([self.dfile[['load','rps','th95','energy']], new], axis=1)

Или в понимании списка создайте list of DataFrame s:

self.unique_counters = [x[:-2] for x in self.dfile_keys[6:] if x.endswith('-0')]
dfs = [self.dfile.loc[:, self.dfile.columns.str.startswith(counter)] 
       for counter in self.unique_counters]

df = pd.concat([self.dfile[['load','rps','th95','energy']], dfs], axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...