将类别转换为数据框中的列 python
Convert categories to columns in dataframe python
我有一个包含两列的数据框。一列包含不同的类别,另一列包含值。
import pandas as pd
data={"category":["Topic1","Topic2","Topic3","Topic2","Topic1","Topic3"], "value":["hello","hey","hi","name","valuess","python"]}
df=pd.DataFrame(data=data)
我想要将不同的类别放入列中,如下所示。
当前输入:
category value
Topic1 hello
Topic2 hey
Topic3 hi
Topic2 name
Topic1 valuess
Topic3 python
期望的输出:
Topic1 Topic2 Topic3
hello hey hi
valuess name python
我尝试使用转置数据帧但没有得到预期的结果。
您可以使用 pandas.concat
和 axis=1
。这也适用于不匹配的长度。
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
s = df.groupby('category')['value'].apply(list)
s.apply(pd.Series).T
category Topic1 Topic2 Topic3
0 hello hey hi
1 valuess name python
使用 pivot
和 cumcount
(用于创建帮助密钥)
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
我有一个包含两列的数据框。一列包含不同的类别,另一列包含值。
import pandas as pd
data={"category":["Topic1","Topic2","Topic3","Topic2","Topic1","Topic3"], "value":["hello","hey","hi","name","valuess","python"]}
df=pd.DataFrame(data=data)
我想要将不同的类别放入列中,如下所示。
当前输入:
category value
Topic1 hello
Topic2 hey
Topic3 hi
Topic2 name
Topic1 valuess
Topic3 python
期望的输出:
Topic1 Topic2 Topic3
hello hey hi
valuess name python
我尝试使用转置数据帧但没有得到预期的结果。
您可以使用 pandas.concat
和 axis=1
。这也适用于不匹配的长度。
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
s = df.groupby('category')['value'].apply(list)
s.apply(pd.Series).T
category Topic1 Topic2 Topic3
0 hello hey hi
1 valuess name python
使用 pivot
和 cumcount
(用于创建帮助密钥)
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