前提・実現したいこと
2-4のようなpangerangeを展開し[2,3,4]のリストではなくstr.splitのexpandのようにDataframeで取得したい
no | value |
---|---|
1 | A |
2-4 | B |
5 | C |
6-9 | D |
10 | E |
こちらに変換したい
value | 0 | 1 | 2 | 3 |
---|---|---|---|---|
A | 1 | |||
B | 2 | 3 | 4 | |
C | 5 | |||
D | 6 | 7 | 8 | 9 |
E | 10 |
上から下はmeltで変換できる
no | value |
---|---|
1 | A |
2 | B |
3 | B |
4 | B |
5 | C |
6 | D |
7 | D |
8 | D |
9 | D |
10 | E |
該当のソースコード
python
1import io 2import pandas as pd 3 4data = """\ 5no,value 61,A 72-4,B 85,C 96-9,D 1010,E 11""" 12df = pd.read_csv(io.StringIO(data)) 13 14df
試したこと
listで取得
python
1def parse_range(s): 2 result = set() 3 4 x = s.split("-") 5 result.update(range(int(x[0]), int(x[-1]) + 1)) 6 7 return sorted(result) 8 9df["no"].apply(parse_range)
補足情報(FW/ツールのバージョンなど)
Pandas 1.0.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/17 04:01