gpt4 book ai didi

python - 如何根据 python 2.7 中的条件转置特定列

转载 作者:行者123 更新时间:2023-11-30 22:15:31 25 4
gpt4 key购买 nike

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

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','']]

这意味着列表应该:

  • 填充所有 ID 的数据
  • 为上述数据集中不存在的变量创建空字符串。
  • 填充嵌套列表,保持与标题列表相同的顺序
  • 仅填充那些 header 值,即 header 列表仅包含值“ABC”、“GHI”,因此嵌套列表应仅填充值“ABC”和“GHI”,并且应忽略上述数据集中的“DEF”行.

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

最佳答案

用途:

L = ['ABC','GHI']

df1 = df.pivot('ID', 'var_name', 'var_value').fillna('')[L].reset_index()
print (df1)
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

L1 = [df1.columns.tolist()] + df1.values.tolist()
print (L1)

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

说明:

  1. 第一pivot ,将 NaN 替换为 fillna ,转换子集以过滤列并从索引创建列 reset_index
  2. 上次创建嵌套列表和上次插入列名称

编辑:

我尝试更改列表中值的顺序:

L = ['GHI', 'ABC']
df1 = df.pivot('ID', 'var_name', 'var_value').fillna('')[L].reset_index()
print (df1)
var_name ID GHI ABC
0 1 This is abc1
1 2 This is ghi2 This is abc2
2 3 This is abc3
3 4 This is abc4

L1 = [df1.columns.tolist()] + df1.values.tolist()
print (L1)

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

关于python - 如何根据 python 2.7 中的条件转置特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50285171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com