首页 > 解决方案 > 如何从熊猫数据框中选择特定列项作为列表?

问题描述

我有一个这样的数据框:

  A  B  C   D 
---------------
0  A  0  C  D
1  A  0  C  D
2  0  B  C  0
3  A  0  0  D
4  0  B  C  0
5  A  0  0  0

如何将其转换为这种形式(不考虑出现的所有零):

   A  B  C  D    E
----------------------
0  A  0  C  D  [A,C,D]
1  A  0  C  D  [A,C,D]
2  0  A  C  0  [A,C]
3  A  0  0  D  [A,D]
4  0  A  C  0  [A,C]
5  A  0  0  0  [A]

最后进入一组项目,如:

[{A,C,D},{A,C,D},{A,C},{A,D},{A,C},{A}]

标签: pythonpandasnumpydataframeseries

解决方案


使用带有过滤的嵌套列表推导0

#if 0 is number change '0' to 0
df['E'] = [[y for y in x if y != '0'] for x in df.values.tolist()]
print (df)
   A  B  C  D          E
0  A  0  C  D  [A, C, D]
1  A  0  C  D  [A, C, D]
2  0  B  C  0     [B, C]
3  A  0  0  D     [A, D]
4  0  B  C  0     [B, C]
5  A  0  0  0        [A]

对于sets:

s = [set([y for y in x if y != '0']) for x in df.values.tolist()]
print (s)
[{'A', 'D', 'C'}, {'A', 'D', 'C'}, {'C', 'B'}, {'A', 'D'}, {'C', 'B'}, {'A'}]

推荐阅读