如何基于python中以前的列数据中的行生成n个列,我对python、数据帧非常陌生

2024-05-17 17:46:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有如下csv文件数据

ModelNumber  Variables
----------   ----------
 208          TotalTerms 
 208          Children 
 208          Property
 208          isMarried 
 207          HasLoan
 207          Children

如何生成以下输出

ModelNumber  Variable1   Variable2   Variable3   Variable4
----------   ----------  ----------  ----------  ----------
208         TotalTerms   Children    Property    isMarried
207         HasLoan      Children

Tags: 文件csv数据propertyvariableschildrenvariable1variable2
2条回答

我会写步骤,这样你会更容易

步骤1:读取csv文件

步骤2:在读取dict中的put数据时(我们希望将ModelNumber等数据作为键,将变量作为数组元素),如果变量值在dict中,则将其值附加到数组中,如果不在dict中,则将其键添加到dict中,并将空数组作为值,然后将此变量添加到数组中

基于数据的数据表示示例:

{
    "208": ["TotalTerms", "Children", "Property", "isMarried"],
    "207": ["HasLoan", "Children"]
}

步骤3:将此数据导出回csv

我认为解决您的问题的更好的方法是使用pivot_表并将每个变量定义为列,而不是variable1、variable2等。。。对于每个型号中的每个变量,只需使用1/0(真/假):

df_1 = pd.DataFrame({'ModelNumber':[208,208,208,208,207,207],
                    'Variables':['TotalTerms','Children','Property','isMarried','HasLoan','Children']})
df_output = pd.pivot_table(df_1,index='ModelNumber',columns='Variables',aggfunc=len)
print(df_output)

输出:

Variables    Children  HasLoan  Property  TotalTerms  isMarried
ModelNumber                                                    
207                 1        1         0           0          0
208                 1        0         1           1          1

相关问题 更多 >