根据Pandas中的后续行值创建列

时间:2015-11-19 13:02:24

标签: python pandas

我有一个包含大约300 000行的数据框,其结构如下:

name    Jack
gender  M
year    1993
country USA
city    Odessa
name    John
gender  M
year    1992
name    Sam
country Canada
city    Toronto

是否有可能使用Pandas使数据帧看起来像这样?

name    gender  year    country city
Jack    M       1993    USA     Odessa
John    M       1992        
Sam                     Canada  Toronto

带有“名字”的行总是在那里,但其他人可能不在。我尝试使用iterrows但没有成功。

1 个答案:

答案 0 :(得分:0)

In [17]:
g = np.cumsum(df.iloc[: , 0] == 'name')

In [15]:
df.groupby(g).apply(lambda x : pd.DataFrame(x.set_index([0]).T , columns=['name' , 'gender' , 'year' , 'country' , 'city']) )
Out[15]:
        name    gender  year   country  city
0                       
1   1   Jack    M      1993    USA      Odessa
2   1   John    M      1992    NaN      NaN
3   1   Sam    NaN      NaN    Canada   Toronto