![](/img/trans.png)
[英]How to transform rows of other columns to columns on the basis of unique values of a column?
[英]How to transform python data frame such that unique row values are transposed to columns and values of another column become their rows
概括
我正在使用 Python 2.7。 我有一个包含所有分类变量的数据框,即数据类型是字符串。 我想将一列的唯一行值转换为多列。 此外,这些结果列的值必须具有来自另一列的相应值。 为了详细描述,我提供了一个可重现的数据帧和预期的 output 供您参考。
需要转置的 Dataframe 可以创建如下:
import pandas as pd
codes = ['codeA','codeB', 'codeC']
variables = ['textA','textA','textB']
dataset = list(zip(codes,variables))
df = pd.DataFrame(data = dataset, columns=['codes','variables'])
df['string'] = 'string1'
需要转置的数据框如下所示:
df
codes variables string
0 codeA textA string1
1 codeB textA string1
2 codeC textB string1
预期的最终 output 应该是这样的:
textA textB string
codeA string1
codeB
codeC string1
注意:目标是转置。 我不太担心空格是 NULL 值还是零。
我不确定您示例中的最后一列,因为它似乎与转换的 rest 不一致。 无论如何,我认为使用 pandas get_dummies
function 转换变量列可能是一个不错的起点。
import pandas as pd
codes = ['codeA','codeB', 'codeC']
variables = ['textA','textA','textB']
dataset = list(zip(codes,variables))
df = pd.DataFrame(data = dataset, columns=['codes','variables'])
df['string'] = 'string1'
df = pd.get_dummies(df, columns=['variables'])
df.variables_textA = df.codes.where(df.variables_textA.astype(bool),0)
df.variables_textB = df.codes.where(df.variables_textB.astype(bool),0)
columns = ['variables_textA', 'variables_textB','string']
df = df[columns]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.