我有两个清单清单。一个具有最大值,另一个具有最小值:
list_max = [
[100, 10, 100],
[-50, 90, -50]
]
list_min = [
[50, -90, -50],
[-100, -10, -500]
]
Run Code Online (Sandbox Code Playgroud)
我想获取每个相关项目的最大绝对值及其符号的第三个列表,即:
list_max[0][0] = 100; list_min[0][0] = 50 -> list_3[0][0] = 100
list_max[0][1] = 10; list_min[0][1] = -90 -> list_3[0][1] = -90
list_3 = [
[100, -90, 100],
[-100, 90, -500]
]
Run Code Online (Sandbox Code Playgroud)
也许和熊猫在一起?
您不需要熊猫:
list_3 = [
[max((x, y), key=abs) for x, y in zip(line_max, line_min)]
for line_max, line_min in zip(list_max, list_min)
]
Run Code Online (Sandbox Code Playgroud)
诀窍在于zip,并max具有按键功能abs。
如果绝对绝对相等(例如-50vs. 50),则此解决方案将首选正值(因为abs采用第一个最大值)。如果需要相反的操作,请交换x并y调用max。
小智 4
正如 L3viathan 所示,您不需要 pandas。但仅供参考,使用 pandas 你可以这样做:
import pandas as pd
list_max = pd.DataFrame([
[100, 10, 100],
[-50, 90, -50]
])
list_min = pd.DataFrame([
[50, -90, -50],
[-100, -10, -500]
])
list_3 = list_max.where(abs(list_max) > abs(list_min), list_min)
Run Code Online (Sandbox Code Playgroud)