Pandas 熊猫数据帧:在2列数据帧中提取数据

Pandas 熊猫数据帧:在2列数据帧中提取数据,pandas,Pandas,我有一个2列的df,有一个冗余但不规则的结构(“名称”、“代码”和与“代码”关联的“w”),我想提取。 以下是DF: import pandas as pd pd.DataFrame([('name','john'), ('date','NaN'), ('curr','NaN'), ('code','w'), ('123',0.4),

我有一个2列的df,有一个冗余但不规则的结构(“名称”、“代码”和与“代码”关联的“w”),我想提取。 以下是DF:

    import pandas as pd
    pd.DataFrame([('name','john'),
                  ('date','NaN'),
                  ('curr','NaN'),
                  ('code','w'),
                  ('123',0.4),
                  ('456',0.5),
                  ('789','0.1'),
                  ('name','Elsa'),
                  ('date','NaN'),
                  ('curr','NaN'),
                  ('code','w'),
                  ('112',0.3),
                  ('243',0.3),
                  ('789','0.3'),
                  ('351','0.1')               
                  ])
我想摘录如下:

    name code w
    john 123 0.4
    john 456 0.5
    john 789 0.1
    elsa 112 0.3
    elsa 243 0.3
    elsa 789 0.3
    elsa 351 0.1
我该怎么做? 谢谢

使用:

#filter rows by name
df[3] = df.loc[df[0] == 'name', 1]
#forward filling missing values
df[3] = df[3].ffill()

#filter out rows by 0 column and change order of columns [3,0,1]
df = df.loc[~df[0].isin(['name','date', 'curr', 'code']), [3, 0, 1]]
#set columns names
df.columns= ['name','code','w']
print (df)
    name code    w
4   john  123  0.4
5   john  456  0.5
6   john  789  0.1
11  Elsa  112  0.3
12  Elsa  243  0.3
13  Elsa  789  0.3
14  Elsa  351  0.1