首页 > 解决方案 > 如何根据python 2.7中的条件转置特定列

问题描述

我在文件中有以下数据格式:

ID,var_name,var_value
1,ABC,This is abc1
1,DEF,This is def1
2,ABC,This is abc2
2,DEF,This is def2
2,GHI,This is ghi2
3,ABC,This is abc3
4,ABC,This is abc4
4,DEF,This is def4

我也有一个标题列表=['ABC','GHI']

在上述数据集中,每个“ID”不一定包含所有变量,但ID:2包含最大数量的变量(ABC、DEF、GHI)。我需要将上述数据集转换为以下嵌套列表格式:

[['ID','ABC','GHI'], [1,'This is abc1', ''],[2, 'This is abc2','This is ghi2'],[3,'This is abc3',''],[4,'This is abc4','']]

这意味着该列表应该:

我想在 Python 2.7 中执行此操作,可能使用 Pandas。

标签: pythonpandasdataframe

解决方案


我认为您应该尝试留在这个美丽的熊猫数据框中

df2=(df.pivot(index='ID', columns='var_name', values='var_value')
     .fillna('').drop('DEF', axis=1).reset_index())



#output:
var_name  ID           ABC           GHI
0          1  This is abc1              
1          2  This is abc2  This is ghi2
2          3  This is abc3              
3          4  This is abc4                

但您也可以进一步实现列表:

print([df2.columns.tolist()] + df2.values.tolist())

[['ID', 'ABC', 'GHI'], 
[1, 'This is abc1', ''], 
[2, 'This is abc2', 'This is ghi2'], 
[3, 'This is abc3', ''], 
[4, 'This is abc4', '']]

推荐阅读