1.5:如果当前周尚未匹配某个值。因此,通过我的脚本,我目前得到了这个(在第 7 周和第 8 周有两个条目): Week -6ren">
gpt4 book ai didi

python - "index.week"使用 iterrows 时进行过滤

转载 作者:太空宇宙 更新时间:2023-11-03 15:54:24 24 4
gpt4 key购买 nike

我想在我的基本脚本中添加一个条件,以便仅查找 if row['Val'] > 1.5:如果当前周尚未匹配某个值。因此,通过我的脚本,我目前得到了这个(在第 7 周和第 8 周有两个条目):

Week is: 3.0 
Value is: 2.55241826585
Week is: 6.0
Value is: 1.55068781498
Week is: 7.0
Value is: 1.50624949327
Week is: 7.0
Value is: 1.64751555163
Week is: 8.0
Value is: 1.79860293902
Week is: 8.0
Value is: 1.97472511905
Week is: 9.0
Value is: 2.31025762754
Week is: 10.0

期望的输出是这样的:

Week is: 3.0 
Value is: 2.55241826585
Week is: 6.0
Value is: 1.55068781498
Week is: 7.0
Value is: 1.64751555163
Week is: 8.0
Value is: 1.79860293902
Week is: 9.0
Value is: 2.31025762754
Week is: 10.0

因此第 7 周和第 8 周只有一项条目。

伪代码:

如果本周没有其他比赛: 做事

数据:

ts = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.columns = ['Val']
ts['Week'] = ts.index.week
for index, row in ts.iterrows():
if row['Val'] > 1.5:
print("Week is:",row['Week'],'\n'"Value is:",row['Val'])

最佳答案

您应该事先进行过滤,而不是在每一行上进行迭代,然后可以删除重复项。这是使用 apply 的单行代码,逐行:

 ts[ts.Val>1.5].drop_duplicates(subset='Week').apply(lambda row: 
print("Week is:",row['Week'],
'\n'"Value is:",row['Val']),
axis=1)
<小时/>

如果你真的想盲目地迭代每一行,那就这样吧。只需使用一个列表来存储几周,并检查它们是否尚未完成...

ts = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.columns = ['Val']
ts['Week'] = ts.index.week
weeks_done = []
for index, row in ts.iterrows():
if (row['Val'] > 1.5) & (row['Week'] not in weeks_done):
print("Week is:",row['Week'],'\n'"Value is:",row['Val'])
weeks_done.append(row['Week'])

关于python - "index.week"使用 iterrows 时进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40936721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com