Car*_*arl 2 python dataframe python-3.x pandas
我需要打开以下数据框:
ID | A | B | C | D | E |
1 | 3 | 1 | 2 | 1 | 0 |
2 | 0 | 1 | 2 | 5 | 2 |
3 | 2 | 2 | 5 | 3 | 10 |
Run Code Online (Sandbox Code Playgroud)
将每个列名作为新值,重复值中指定的次数。因此,三排“A”,一排“B”等:
ID | VALUE |
1 | A |
1 | A |
1 | A |
1 | B |
1 | C |
1 | C |
1 | D |
2 | B |
2 | C |
2 | C |
...
Run Code Online (Sandbox Code Playgroud)
到目前为止,我一直在循环播放,建立一个新的数据框,但它永远需要(100,000 个原始行,值 100+)并且感觉不对。已经看过了melt
,explode
但这不是我想要的。这样做的任何优雅的解决方案?
data = [{'ID': 1, 'A': 3, 'B': 1, 'C': 2, 'D': 1, 'E': 0},
{'ID': 2, 'A': 0, 'B': 1, 'C': 2, 'D': 5, 'E': 2},
{'ID': 3, 'A': 2, 'B': 2, 'C': 5, 'D': 3, 'E': 10}]
df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)
一种使用方式pandas.DataFrame.columns.repeat
:
df.apply(df.columns.repeat, axis=1).explode()
Run Code Online (Sandbox Code Playgroud)
输出:
ID
1 A
1 A
1 A
1 B
1 C
1 C
1 D
2 B
...
3 E
3 E
3 E
dtype: object
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48 次 |
最近记录: |