【问题标题】:Pandas loop issue熊猫循环问题
【发布时间】:2021-09-16 22:04:30
【问题描述】:

我正在尝试应用循环来选择要在方程式中使用的特定值。我有以下数据集

stock Demand
1585 -1677
2305 20
34215 -38968
30 70
10967 -4737

我正在应用以下代码

for i in Demand:
    if i > df['Stock'].all():
        Order = Demand
    elif i < 0 :
        Order = df['Stock'] - Demand 

我想要以下列表

Order
3262
23005
73183
70
15704

但我得到以下列表

Order
3262
23005
73183
-39
15704

我无法弄清楚我在这里应用的循环有什么问题。 谢谢。

【问题讨论】:

  • 为什么是 23005?错别字?
  • 您可以发布实际代码吗?这看起来像伪代码。它当然不会产生数据框。
  • @Corralien:我没注意到。它一定是一个错误的数字,我正在退出代码。谢谢。
  • @Corralien:谢谢你的代码。

标签: python pandas for-loop


【解决方案1】:

我试图了解您的逻辑并修复了错误。是你所期望的吗?

df['Order'] = np.where(df['Demand'] < 0,
                       df['stock'] - df['Demand'],
                       df[['stock', 'Demand']].max(1))

输出:

>>> df
   stock  Demand  Order
0   1585   -1677   3262
1   2305      20   2305
2  34215  -38968  73183
3     30      70     70
4  10967   -4737  15704

【讨论】:

  • @irfanraorao。它能解决你的问题吗?
  • 它确实有效。谢谢。
【解决方案2】:

要调试代码,请尝试在每个步骤后添加print() 语句,以查看代码在做什么!

【讨论】:

  • 嗨@Daniele - 欢迎来到 StackOverflow!这是一个调试技巧,但不是问题的答案。您还没有足够的声誉来发表评论 - 要开始尝试找到一个您可以完全回答的问题。查看answering questions 的本指南。祝你好运:)
猜你喜欢
  • 2021-07-03
  • 2018-12-11
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
相关资源
最近更新 更多