我想重复数据帧的行,以便通过在id上添加索引来使id保持唯一。
import pandas as pd
df = pd.DataFrame({"id": ["a1", "a2"], "value": [["x", "y", "z"], ["x"]]})
Out[31]:
id value
0 a1 [ x, y, z]
1 a2 [x]
我想得到以下内容。
id value
0 a1-1 x
1 a1-2 y
2 a1-3 z
3 a2-1 x
我可以使用np.repeat
重复这些行,但无法保持ID唯一。
out = pd.DataFrame(df.drop(["value"], axis=1).values.repeat([3,1], axis=0))
答案 0 :(得分:2)
你的方向正确,我在这里使用repeat
s=pd.DataFrame({'id':df.id.repeat(df.value.str.len()),'value':df.value.sum()})
s.assign(id=s.id.astype(str)+'-'+(s.groupby('id').cumcount()+1).astype(str))
Out[473]:
id value
0 a1-1 x
0 a1-2 y
0 a1-3 z
1 a2-1 x