将类别转换为数据框python中的列

时间:2018-07-25 14:43:38

标签: python pandas dataframe transpose

我有一个包含两列的数据框。一列包含不同的类别,另一列包含值。

df  = pd.DataFrame({'a':[np.nan,2,3,4,5],'b':[6,7,8,9,np.nan],'c':[5,4,3,2,1]})
df2 = (df >> mask((X.a.isnull()) | (X.b.notnull())))

print(df2)

     a    b  c
0  NaN  6.0  5
1  2.0  7.0  4
2  3.0  8.0  3
3  4.0  9.0  2

我希望将不同类别分为以下栏目。

所需的输出:

import pandas as pd

data={"category":["Topic1","Topic2","Topic3","Topic2","Topic1","Topic3"], "value":["hello","hey","hi","name","valuess","python"]}

df=pd.DataFrame(data=data)

我尝试使用转置数据框,但未获得预期结果。

3 个答案:

答案 0 :(得分:3)

您可以在axis=1中使用pandas.concat。这也适用于长度不匹配的情况。

grouper = df.groupby('category')
df = pd.concat([pd.Series(v['value'].tolist(), name=k) for k, v in grouper], axis=1)

print(df)

    Topic1 Topic2  Topic3
0    hello    hey      hi
1  valuess   name  python

答案 1 :(得分:3)

s = df.groupby('category')['value'].apply(list)
s.apply(pd.Series).T

category   Topic1 Topic2  Topic3
0           hello    hey      hi
1         valuess   name  python

答案 2 :(得分:0)

使用pivotcumcount(用于创建帮助键)

df.assign(key=df.groupby('category').cumcount()).pivot('key','category','value')
Out[381]: 
category   Topic1 Topic2  Topic3
key                             
0           hello    hey      hi
1         valuess   name  python