pandas Dataframe,从一个单元格到另一个单元格的特定值

时间:2017-11-09 12:13:23

标签: python pandas numpy

我希望能够在过敏栏下复制三种语言的值。我想使用pandas Dataframes将特定的单元格值数据从英文行移动到它上面的法语和荷兰语下面。在复制之后,我想删除英文行。

注意:索引是以下语言。它们按法语,英语,荷兰语,法语,英语,荷兰语等顺序排列。每个值是典型的反应是在列过敏下给出

Index       allergy 

french      ''

english     'MAY CONTAIN: prawn' 

dutch       ''

french      ''

english     'MAY CONTAIN: peanuts'

dutch       ''

french      ''

english     'MAY CONTAIN: milk'

dutch       ''

再次总结一下,将特定的细胞值从英语复制到荷兰语和法语行。

编辑:我再也没有评论了:是的,这是这个数据集的模式。此输出显示在excel文件中。

期望的输出:

Index        allergy 

french      'MAY CONTAIN: prawn'

english     'MAY CONTAIN: prawn'  # remove

dutch       'MAY CONTAIN: prawn'

french      'MAY CONTAIN: peanuts' 

english     'MAY CONTAIN: peanuts'  # remove

dutch       'MAY CONTAIN: peanuts'

french      'MAY CONTAIN: milk'

english     'MAY CONTAIN: milk'  # remove

dutch       'MAY CONTAIN: milk'

之后,它看起来应该是这样的

最终输出:

Index        allergy 

french      'MAY CONTAIN: prawn'

dutch       'MAY CONTAIN: prawn'

french      'MAY CONTAIN: peanuts' 

dutch       'MAY CONTAIN: peanuts'

french      'MAY CONTAIN: milk'

dutch       'MAY CONTAIN: milk'

1 个答案:

答案 0 :(得分:2)

首先仅过滤english行并创建默认索引:

df1 = df.loc['english'].reset_index(drop=True)
print (df1)
                  allergy
0    'MAY CONTAIN: prawn'
1  'MAY CONTAIN: peanuts'
2     'MAY CONTAIN: milk'

然后concat两次,排序并最后删除第二级:

df = (pd.concat([df1, df1], keys=('french','dutch'))
        .sort_index(level=1)
        .reset_index(level=1, drop=True)
      )
print (df)
                       allergy
french    'MAY CONTAIN: prawn'
dutch     'MAY CONTAIN: prawn'
french  'MAY CONTAIN: peanuts'
dutch   'MAY CONTAIN: peanuts'
french     'MAY CONTAIN: milk'
dutch      'MAY CONTAIN: milk'