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有关如何筛选列的信息,请参见此