【发布时间】:2022-01-13 15:22:49
【问题描述】:
我有一个来自更大数据框的子集数据框。我需要能够创建一个 for 循环来搜索数据框并提取与正确名称对应的数据。
import pandas as pd
import numpy as np
import re
data = {'Name': ['CH_1', 'CH_2', 'CH_3', 'FV_1', 'FV_2', 'FV_3'],
'Value': [1, 2, 3, 4, 5, 6]
}
df = pd.DataFrame(data)
FL = [17.7, 60.0]
CH = [20, 81.4]
tol = 8
time1 = FL[0] + tol
time2 = FL[1] + tol
time3 = CH[0] + tol
time4 = CH[1] + tol
FH_mon = df['Values'] *5
workpercent = [.7, .92, .94]
mhpy = [2087, 2503, 3128.75]
list1 = list()
list2 = list()
for x in df['Name']:
if x == [(re.search('FV_', s)) for s in df['Name'].values]:
y = np.select([FH_mon < time1 , (FH_mon >= time1) and (FH_mon < time2), FH_mon > time2], [workpercent[0],workpercent[1],workpercent[2]])
z = np.select([FH_mon < time1 , (FH_mon >= time1) and (FH_mon < time2), FH_mon > time2], [mhpy[0],mhpy[1],mhpy[2]])
if x == [(re.search('CH_', s)) for s in df['Name'].values]:
y = np.select([FH_mon < time3, (FH_mon >= time3) and (FH_mon < time4)], [workpercent[0],workpercent[1]])
z = np.select([FH_mon < time3, (FH_mon >= time3) and (FH_mon < time4)], [mhpy[0],mhpy[1]])
list1.append(y)
list2.append(z)
我之前有一个简单的版本,我只是添加了几个数字,我得到了非常有用的答案来回答我的问题,但这里是更复杂的版本。我需要搜索,只要 name 列中有 FV,if 循环就会运行并将 Name 列中的数据与 FV 一起使用。 CH 也一样。当循环遍历名称列时,我有列表来跟踪每个值。如果有更简单的方法,我真的很感激看到它,但现在这似乎是最干净的方法,但我收到错误,否则循环将无法正常运行。
【问题讨论】: