如何用Pandas从源DataFrame生成最小值及对应列名的新列
如何基于源DataFrame添加每行取余后的最小值及对应列名列?
首先明确需求:基于原始的dfrtn DataFrame,添加Minimum(每行元素对7取余后的最小值)和MinCol(该最小值对应的列名)两列,得到指定结果。
解决方案代码
先看完整实现代码(包含构造示例DataFrame的部分,方便直接测试):
import pandas as pd # 构造你提供的源DataFrame dfrtn data = { 'A': [33, 39, 45, 51, 57], 'B': [34, 40, 46, 52, 58], 'C': [35, 41, 47, 53, 59], 'D': [36, 42, 48, 54, 60], 'E': [37, 43, 49, 55, 61], 'F': [38, 44, 50, 56, 62] } dfrtn = pd.DataFrame(data) # 核心操作:添加目标列 dfrtn['Minimum'] = (dfrtn % 7).min(axis=1) dfrtn['MinCol'] = (dfrtn % 7).idxmin(axis=1) # 若仅需展示新增的两列,可提取出来 target_result = dfrtn[['Minimum', 'MinCol']] print(target_result)
代码逻辑拆分
(dfrtn % 7):对原DataFrame的每一个元素执行取余7操作,生成一个和dfrtn结构一致的临时DataFrame(即你提到的dfrtn2)。.min(axis=1):指定axis=1表示按行计算最小值,将每行取余后的最小值赋值给新列Minimum。.idxmin(axis=1):同样按行查找,返回每行取余后最小值对应的列名,赋值给新列MinCol。
运行结果
执行代码后,target_result的输出与预期完全一致:
Minimum MinCol 0 0 C 1 0 D 2 0 E 3 0 F 4 1 A
内容的提问来源于stack exchange,提问作者B.A.
相关产品推荐
相关产品推荐

