Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从具有相似名称的列中提取最大值_Python_Pandas - Fatal编程技术网

Python 从具有相似名称的列中提取最大值

Python 从具有相似名称的列中提取最大值,python,pandas,Python,Pandas,我想问一下如何在以下列中选择每行的最高值 ID mean_idx269 mean_idx270 mean_idx271 mean_idx272 mean_idx273 mean_idx274 mean_idx275 ... 1 37 42 44 40 42 35 46 2 50 41 23

我想问一下如何在以下列中选择每行的最高值

 ID   mean_idx269   mean_idx270 mean_idx271 mean_idx272 mean_idx273 mean_idx274 mean_idx275 ... 

 1      37          42          44           40          42          35         46      
 2      50          41          23           64          21          64         21
 3      12          42          55           10          22          12         22
我的预期产出是:

 ID   mean_idx269   mean_idx270 mean_idx271 mean_idx272 mean_idx273 mean_idx274 mean_idx275 ... max

 1      37          42          44           40          42          35         46           46   
 2      50          41          23           64          21          64         21           64
 3      12          42          55           10          22          12         22           55
dataframe中还有其他列,以不同的方式命名,但我需要从那些以mean_idx开头/包含mean_idx的列中提取最大值

结果应该是一个包含ID列和包含mean_idx的列的数据帧

我不知道在这种情况下是否可以使用max函数,因为我需要通过每个ID的更多列进行选择

使用列表理解来获得所需的包含匹配单词的列 创建仅包含所需列的单独数据框 将“ID”列添加到前面,因为它与列表不匹配。 使用该方法并为行指定axis=1。 df_subset[mean_cols].maxaxis=1,而不仅仅是df_subset.maxaxis=1,否则ID也将用于确定max。 作为pd进口熊猫 数据={'ID':[1,2,3], “平均值”:[37,50,12], “平均值”:[42,41,42], “mean_idx271”:[44,23,55], “平均值”:[40,64,10], “平均值”:[42,21,22], “平均值”:[35,64,12], “mean_idx275”:[46,21,22], ‘test_idx333’:[1,3,4]} df=pd.DataFramedata 获取具有所需模式的列 mean_cols=[如果col中的'mean_idx'为df列中的col,则为col] 使用所需列创建dataframe的子集 df_subset=df['ID']+平均值].复制 获取特定列的最大值 df_子集['max_row']=df_子集[平均值].maxaxis=1 displaydf_子集 ID平均值?idx269平均值?idx270平均值?idx271平均值?idx272平均值?idx273平均值?idx274平均值?idx275最大值?行 0 1 37 42 44 40 42 35 46 46 1 2 50 41 23 64 21 64 21 64 2 3 12 42 55 10 22 12 22 55 用于仅选择与图案匹配的列:

df['max'] = df.filter(like='mean_idx').max(axis=1)
输出:

   ID  mean_idx269  mean_idx270  mean_idx271  mean_idx272  mean_idx273  mean_idx274  mean_idx275  max
0   1           37           42           44           40           42           35           46   46
1   2           50           41           23           64           21           64           21   64
2   3           12           42           55           10           22           12           22   55
可以使用df.appenddf[list_with_filtered_colnames].maxaxis=1,axis=1有关如何筛选列的信息,请参见此