我有这样的数据框 我想在列表中输出,但是对于每个唯一的 我需要的输出是针对不同id的不同变量,可以说
答案 0 :(得分:0) 类似的东西: 输出: 答案 1 :(得分:0) 您可以使用具有自定义lambda函数的列表来创建系列: 然后可以使用globals,但最好不要按名称创建变量 更好的方法是创建字典:| ID | M001 | M002 | M003 | M004 |
|------|------|------|------|------|
| E001 | 3 | 4 | 3 | 2 |
| E002 | 4 | 5 | 5 | 3 |
| E003 | 4 | 3 | 5 | 4 |
ID
这样的东西,例如E001,E002,我想在每个M001,M002等中列出其响应列表E001_response = [["M001",3],["M002",4],["M003",3],["M004",2]]
2 个答案:
new_df = df.apply(lambda x: list(zip(df.columns, x)), axis=1)
ID
E001 [(M001, 3), (M001, 4), (M001, 3), (M001, 2)]
E002 [(M002, 4), (M002, 5), (M002, 5), (M002, 3)]
E003 [(M003, 4), (M003, 3), (M003, 5), (M003, 4)]
dtype: object
s = df.set_index('ID').apply(lambda x: list(map(list,zip(df.columns[1:], x))), 1)
print (s)
ID
E001 [[M001, 3], [M002, 4], [M003, 3], [M004, 2]]
E002 [[M001, 4], [M002, 5], [M003, 5], [M004, 3]]
E003 [[M001, 4], [M002, 3], [M003, 5], [M004, 4]]
dtype: object
for k, v in s.items():
globals()[f'{k}_response'] = v
print (E001_response)
[['M001', 3], ['M002', 4], ['M003', 3], ['M004', 2]]
d = s.to_dict()
print (d)
{'E001': [['M001', 3], ['M002', 4], ['M003', 3], ['M004', 2]],
'E002': [['M001', 4], ['M002', 5], ['M003', 5], ['M004', 3]],
'E003': [['M001', 4], ['M002', 3], ['M003', 5], ['M004', 4]]}
print (d['E001'])
[['M001', 3], ['M002', 4], ['M003', 3], ['M004', 2]]