

データ前処理でどうしても解決できない部分があり質問させていただきます。

2つのテーブルで1つはユーザーIDに基づいたテレビ番組の視聴データ（0：見てない 1：見た）、  
2つ目は上記テレビ番組のIDに基づいたCMの出稿データとなっており、製品名、会社名はダミーにしております。

今回やろうとしていることは製品ごとに出稿されたCMをユーザーがいくつ見たのかを集計したく  
Aという製品は〇回、Bという製品は〇回といったアウトプットのイメージなのですがどうしても  
調べてもやり方が分からず、ご教示いただけると幸いです。

テレビ番組視聴データサンプル  
<https://drive.google.com/file/d/1ySTpfMASAqerC-
vWrMX5oAmdT3DxBHno/view?usp=sharing>  
テレビCM出稿データサンプル  
<https://drive.google.com/file/d/1qxGqaUQrtrMpTkMptb6slyq22fNyfvRO/view?usp=sharing>

現在実行中のコード

[code]

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    tv = pd.read_csv('sample_tv.csv')
    tv
    
    tvcm = pd.read_csv('sample_tvcm.csv',encoding='cp932')
    tvcm
    
[/code]

ご回答いただいた実行結果

ありがとうございます。いただいたコードで実行したところ

[code]

      df = (tvcm.groupby('item_name')
                  .agg({
                    'title_code_variable': lambda x: tv[x].sum()
                  })
                  .applymap(lambda x: x.sum())
                  .reset_index()
                  .rename(columns={
                    'item_name': '製品名',
                    'title_code_variable': '視聴回数'
              }))
    
[/code]

の実行後に

[code]

    ValueError: Must produce aggregated value
    
[/code]

となってしまったのですが何かこちら側での問題が考えられますでしょうか？


CC BY-SA 4.0
2021-10-25T21:24:40.153
83257
2021-10-26T04:41:07.380
2021-10-26T04:41:07.380
47685
47685
question
python pandas
python 列と行のデータを照らし合わせて集計したい


製品名でグループ化して sum を取ります。

[code]

    import pandas as pd
    import numpy as np
    
    tv = pd.read_csv('sample_tv.csv')
    tvcm = pd.read_csv('sample_tvcm.csv', encoding='cp932')
    
    df = (tvcm.groupby('item_name')
              .agg({
                'title_code_variable': lambda x: tv[x].sum()
              })
              .applymap(lambda x: x.sum())
              .reset_index()
              .rename(columns={
                'item_name': '製品名',
                'title_code_variable': '視聴回数'
              }))
    
[/code]

`print(df.to_markdown(index=False))`

製品名 | 視聴回数  
---|---  
A | 4  
B | 1  
C | 2  
D | 1


CC BY-SA 4.0
2021-10-26T03:55:51.873
83264
2021-10-26T04:18:52.390
2021-10-26T04:18:52.390
47127
47127
83257
answer