繁体   English   中英

如何转换 python 数据帧,以便将唯一的行值转置到列,另一列的值成为它们的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM