Python:重复数据帧的行

时间:2018-02-12 21:35:24

标签: python pandas dataframe

我想重复数据帧的行,以便通过在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))

1 个答案:

答案 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