将列标题和列值向下移动n行

时间:2019-10-18 01:30:09

标签: python pandas

这是我的数据集,我的起始行是Name开头。如何将品牌栏和名称,地址...行放在一起?我不能将其放在开始行上方,因为我需要将其提取。

2        3      4      5      6       7     ...    Brand
A        B     nan    nan    nan     nan    ...     nike
Nan      B     nan    nan     C      nan    ...     nike
Nan      B     nan    nan     C      nan    ...     nike
AA       B     nan    nan     C      nan    ...     Adidas
Name  Address  Type   Size   Comment Grade  ...     Adidas
John    ggg    sports  8     Nil      A     ....    Adidas

这是我想要的结果:

2        3      4      5      6       7     ...    
A        B     nan    nan    nan     nan    ...     
Nan      B     nan    nan     C      nan    ...     
Nan      B     nan    nan     C      nan    ...     
AA       B     nan    nan     C      nan    ...     
Name  Address  Type   Size   Comment Grade  ...     Brand
John    ggg    sports  8     Nil      A     ....    Nike
John    ggg    sports  9     Nil      B     ....    Nike
Mary    ggg    sports  6     Nil      A     ....    Adidas

1 个答案:

答案 0 :(得分:1)

您可以使用

df['Brand'] = df['Brand'].shift(df['2'].str.contains('Name').idxmax()+1)
df.at[df['2'].str.contains('Name').idxmax(), 'Brand'] = 'Brand'
print(df)

输出

    2   3     4        5      6     7   ...     Brand
0   A   B   NaN     NaN     NaN     NaN     ...     NaN
1   Nan     B   NaN     NaN     C   NaN     ...     NaN
2   Nan     B   NaN     NaN     C   NaN     ...     NaN
3   AA  B   NaN     NaN     C   NaN     ...     NaN
4   Name    Address     Type    Size    Comment     Grade   ...     Brand
5   John    ggg     sports  8   Nil     A   ....    nike