Ole*_*sii 4 python dataframe pandas
对于每个ID,将非零列名称记为行时,需要将稀疏数据帧转换为形状。
我已经尝试过使用带有循环的for循环-但速度非常慢,无法使用。也许有人有更好的主意?
例如,初始df:
df=pd.DataFrame({'Id':['id1','id2','id3'], 'a':[0,1,1] ,'b':[1,0,1], 'c':[1,1,0]})
Id a b c
id1 0 1 1
id2 1 0 1
id3 1 1 0
Run Code Online (Sandbox Code Playgroud)
预期:
Id columns
id1 b
id1 c
id2 a
id2 c
id3 a
id3 b
Run Code Online (Sandbox Code Playgroud)
使用熊猫.25.0,这是使用.dotand 的方法explode:
m=df.set_index('Id')
m.dot(m.columns+',').str[:-1].str.split(',').explode().reset_index(name='Columns')
Run Code Online (Sandbox Code Playgroud)
Id Columns
0 0 b
1 0 c
2 1 a
3 1 c
4 2 a
5 2 b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |