Warm tip: This article is reproduced from serverfault.com, please click

其他-根据行值选择列,Python,Pandas

(其他 - selecting columns based on row value, Python, Pandas)

发布于 2020-11-27 23:37:34

我需要清理一个数据框,并且只想选择其中一个行中具有特定值的列。例如,仅提取第3行中的值为NaN的那些列。

Questioner
Glassmanet
Viewed
11
ChillerObscuro 2020-11-28 08:14:35

Joe的答案显示了如何基于列值获取行,似乎你想基于行值获取列。这是使用列表理解来实现此目的的简单方法。

In [45]: df = pd.DataFrame({'one': [2, 3, 4], 'two': [5, 6, 7], 'three': [8, 6, 1]})                                                                                                                 
In [46]: df                                                                                                                                                                                          
Out[46]: 
   one  two  three
0    2    5      8
1    3    6      6
2    4    7      1

现在,我们将分配变量以说明正在查看的行以及保留该列所需的值。然后,我们进行列表解析,并为过滤后的df重新命名

In [50]: row = 1                                                                                                                                                                                     
In [51]: value = 6                                                                                                                                                                                   
In [53]: list_comp = [c for c in df.columns if df[c][row] == value]                                                                                                                                   
In [54]: filtered_df = df[list_comp]                                                                                                                                                                  
In [55]: filtered_df                                                                                                                                                                                 
Out[55]: 
   two  three
0    5      8
1    6      6
2    7      1