Измените записи столбца в dataframe, чтобы получить в том же диапазоне - PullRequest
0 голосов
/ 31 марта 2019

У меня есть CSV-файл, который выглядит следующим образом.Я загрузил файл как фрейм данных панд.Есть ли какой-нибудь способ, которым я могу получить все значения в столбце времени в одном диапазоне, т.е. все записи в миллисекундах и память в МБ?

prefix/up17/strided_slice_1 4B  15us
prefix/fres16/conv_b_1x3/weights    196.61KB    12us
prefix/fres16/conv_a_3x1/weights    196.61KB    12us
prefix/up20/weights 65.54KB 12us
prefix/fres15/conv_b_1x3/weights    196.61KB    11us
prefix/fres18/conv_b_3x1/weights    49.15KB 11us
prefix/fres7/conv_b_3x1/weights 49.15KB 11us
prefix/fres5/conv_a_3x1/weights 49.15KB 11us
prefix/fres13/conv_b_1x3/weights    196.61KB    11us
prefix/fres18/conv_b_1x3/weights    49.15KB 11us
prefix/fres5/conv_a_1x3/weights 49.15KB 11us
prefix/fres14/conv_a_3x1/weights    196.61KB    11us
prefix/fres7/conv_a_1x3/weights 49.15KB 11us
prefix/fres10/conv_b_1x3/weights    196.61KB    11us
prefix/fres14/conv_b_1x3/weights    196.61KB    11us
prefix/fres4/conv_b_3x1/weights 49.15KB 11us
prefix/d2/conv/weights  27.65KB 11us
prefix/fres19/conv_a_1x3/weights    49.15KB 11us
prefix/fres13/conv_a_1x3/weights    196.61KB    11us
prefix/fres11/conv_a_1x3/weights    196.61KB    11us
prefix/fres21/conv_b_3x1/weights    3.07KB  11us
prefix/fres12/conv_b_3x1/weights    196.61KB    11us
prefix/fres22/conv_b_3x1/weights    3.07KB  11us
prefix/fres18/conv_a_1x3/weights    49.15KB 11us
prefix/fres9/conv_a_3x1/weights 196.61KB    11us

Извините, если вопрос наивный.Я новичок в пандах.

1 Ответ

2 голосов
/ 31 марта 2019

Интересная проблема. Вот как я бы подошел к этому, предполагая, что соответствующие столбцы названы size и time:

size_data = df['size'].str.extract('([\d\.]+)\B(\w?B)').rename(columns={0: 'size_amount', 1: 'size_multiplier'})
time_data = df['time'].str.extract('([\d\.]+)\B(\w?s)').rename(columns={0: 'time_amount', 1: 'time_multiplier'})

size_mapping = {'B': 1 / (1024 ** 2), 'KB': 1 / 1024, 'MB': 1}
time_mapping = {'ms': 1, 'us': 1e-3}

df['size'] = size_data ['size_amount'].astype(float) * size_data ['size_multiplier'].map(size_mapping)
df['time'] = time_data ['time_amount'].astype(float) * time_data ['time_multiplier'].map(time_mapping)

print(df)

Выход:

                                path      size   time
0        prefix/up17/strided_slice_1  0.000004  0.015
1   prefix/fres16/conv_b_1x3/weights  0.192002  0.012
2   prefix/fres16/conv_a_3x1/weights  0.192002  0.012
3                prefix/up20/weights  0.064004  0.012
4   prefix/fres15/conv_b_1x3/weights  0.192002  0.011
5   prefix/fres18/conv_b_3x1/weights  0.047998  0.011
6    prefix/fres7/conv_b_3x1/weights  0.047998  0.011
7    prefix/fres5/conv_a_3x1/weights  0.047998  0.011
8   prefix/fres13/conv_b_1x3/weights  0.192002  0.011
9   prefix/fres18/conv_b_1x3/weights  0.047998  0.011
10   prefix/fres5/conv_a_1x3/weights  0.047998  0.011
11  prefix/fres14/conv_a_3x1/weights  0.192002  0.011
12   prefix/fres7/conv_a_1x3/weights  0.047998  0.011
13  prefix/fres10/conv_b_1x3/weights  0.192002  0.011
14  prefix/fres14/conv_b_1x3/weights  0.192002  0.011
15   prefix/fres4/conv_b_3x1/weights  0.047998  0.011
16            prefix/d2/conv/weights  0.027002  0.011
17  prefix/fres19/conv_a_1x3/weights  0.047998  0.011
18  prefix/fres13/conv_a_1x3/weights  0.192002  0.011
19  prefix/fres11/conv_a_1x3/weights  0.192002  0.011
20  prefix/fres21/conv_b_3x1/weights  0.002998  0.011
21  prefix/fres12/conv_b_3x1/weights  0.192002  0.011
22  prefix/fres22/conv_b_3x1/weights  0.002998  0.011
23  prefix/fres18/conv_a_1x3/weights  0.047998  0.011
24   prefix/fres9/conv_a_3x1/weights  0.192002  0.011

Если вы хотите добавить другие единицы или изменить базовый блок, просто измените size_mapping и / или time_mapping.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...