Присоединение итогового фрейма данных к новому фрейму данных - PullRequest
0 голосов
/ 06 ноября 2018

Я использую pandas для вычисления суммы столбца, в котором «anystring» находится в имени файла, и добавляю строку «Totals_string» с суммой запросов для именованной «any string»

df = pd.read_sql("select count(*) as requests,\
filename,\
file_extension,\
date_trunc('day', log_time) as date\
from "+dbase+"\
where\
filename like '%anyStringA%'\
OR\
filename like '%anyStringB%'\
OR\
filename like '%anyStringC%'\
and\
file_extension not in ('gif')\
group by filename,file_extension,date_trunc('day', log_time)\
order by requests desc",conn)

Это создает df как это:

requests    filename    Extension   date
0   10  xxanyStringAxx  .jpg    2018-10-31
1   8   xxanyStringBxx  .jpg    2018-10-31
2   11  xxanyStringCxx  .jpg    2018-10-31
3   12  xxxanyStringAxx .jpg    2018-10-31
.

Я хотел бы создать новый DF с итогами каждого условия, например, фрейм данных будет выглядеть как

Totals_anyStringA = 22
Totals_anyStringB = 8
Totals_anyStringC = 11

По предложению @sacul я сделал это:

Totals_df = (df.groupby(df.url_info_filename.str.extract('anyName(.*)')\
                        .requests.sum()\
                        .add_prefix('Total_')\
                        .to_frame()))

Моя ошибка была:

AttributeError: 'Series' object has no attribute 'requests'

* также я только не знаю, как создать новую строку для каждого из разных имен, как вы можете видеть, я только что тестировал с anyStringA, но там должны быть все интересующие вас имена.

Спасибо

1 Ответ

0 голосов
/ 06 ноября 2018

IIUC, вы хотите извлечь строку, следующую за Album и предшествующую подчеркиванию _ из имени файла, затем сгруппировать ее, получить сумму и поместить ее в новую таблицу. Если это так, вы можете сделать что-то вроде этого (я добавил несколько произвольных альбомов для иллюстрации):

>>> df
   Requests    filename Extension        date
0    914208  AlbumA_100      .jpg  2018-10-31
1     73795  AlbumA_132      .jpg  2018-10-31
2     39651  AlbumA_130      .jpg  2018-10-31
3        10  AlbumB_130      .jpg  2018-10-31
4        15  AlbumB_135      .jpg  2018-10-31
4        85  AlbumC_135      .jpg  2018-10-31
4        15   AlbumC_13      .jpg  2018-10-31

totals_df = (df.groupby(df.filename.str.extract('Album(.*)_'))
             .Requests.sum()
             .add_prefix('Total_')
             .to_frame())

>>> totals_df
          Requests
filename          
Total_A    1027654
Total_B         25
Total_C        100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...