在熊猫数据框中重复行

时间:2019-12-27 13:17:34

标签: python-3.x pandas dataframe repeat

我的数据框为:

data = pd.DataFrame([[1,25,'Type 1'],[2,32,'Type 2'],[1,30,'Type 3'],[2,32,'Type 1'],[3,43,'Type1|Type2']], columns = ['data1','data2','Type'])

   data1  data2         Type
0      1     25       Type 1
1      2     32       Type 2
2      1     30       Type 3
3      2     32       Type 1
4      3     43  Type 1|Type 2

我只想将Type in Type列作为一个值(不能为Type1 | Type2)。对于具有两个值的值,它们将被拆分,而其他列的值将被复制为新行。预期的数据帧如下:

   data1  data2    Type
0      1     25  Type 1
1      2     32  Type 2
2      1     30  Type 3
3      2     32  Type 1
4      3     43  Type 1
5      3     43  Type 2

根据其他帖子,我可以按照以下步骤进行操作:

from itertools import chain

split_type = data['Type'].str.split('|')

data2 = pd.DataFrame({'data1': data['data1'].values.repeat(split_type.str.len()),'data2':data['data2'].values.repeat(split_type.str.len()),'Type': list(chain.from_iterable(split_type.tolist()))})

我得到了预期的结果。但是,如果我有很多列(而不是只有data1,data2和Type作为列),则这样做效率不高。有什么方法可以使我不必为每列做类似的事情('data1':data ['data1']。values.repeat(split_type.str.len())'),从而提高效率。谢谢。

0 个答案:

没有答案