前提・実現したいこと
pandasのDataFrame内のデータを"、"で分割後、分割個数に応じてそれぞれ1/1、1/2、1/3、1/4でカウントし集計したい
data = ["A", "A、B", "A、B、C", "A、B、C、D"]
目的のDataFrameに他にも列を追加したいため下記表の1の列を結合する方法を教えて欲しいです。
※このDataFrameを作成したい
0 | 1 | |
---|---|---|
0 | A | 1.0000 |
1 | A | 0.5000 |
2 | B | 0.5000 |
3 | A | 0.3333 |
4 | B | 0.3333 |
5 | C | 0.3333 |
6 | A | 0.2500 |
7 | B | 0.2500 |
8 | C | 0.2500 |
9 | D | 0.2500 |
集計
1 | |
---|---|
A | 2.0833 |
B | 1.0833 |
C | 0.5833 |
D | 0.2500 |
該当のソースコード
python
1import pandas as pd 2 3data = ["A", "A、B", "A、B、C", "A、B、C、D"] 4 5s1 = pd.Series(data) 6 7df = s1.str.split("、", expand=True) 8df1 = df.stack() 9 10s2 = s1.apply(lambda x: 1/len(x.split("、"))) 11 12# df1にs2の値の列を追加したい
試したこと
ファイルを読み込んでリストに格納する方法
https://teratail.com/questions/103679
リストからだとできるのですが元のデータがDataFrameのためDataFrameのままで実現したい
python
1result = [[j, 1/len(i.split("、"))] for i in data for j in i.split("、")] 2 3df = pd.DataFrame(result) 4 5pt = df.pivot_table(index=0, aggfunc=sum)
補足情報(FW/ツールのバージョンなど)
Google Colaboratory
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/12 00:09