【问题标题】:How to add value if condition match, python [duplicate]如果条件匹配,如何添加值,python [重复]
【发布时间】:2019-08-07 23:09:39
【问题描述】:

我想在以下语句为真的“分数”列的每一行中添加“1”,

import pandas as pd
import numpy as np


df = pd.read_csv(Path1 + 'Test.csv')
df.replace(np.nan, 0, inplace=True)
df[(df.Day7 >= 500)]

Sample Value

Output

【问题讨论】:

  • 请在您的帖子中以文本形式的输入和预期输出添加示例,然后让我们知道。
  • @RavinderSingh13 添加了样本值并要求输出详细信息
  • 如上所述,始终建议以文本形式添加输入和预期输出示例,请编辑您的帖子并让我们知道。

标签: python pandas csv


【解决方案1】:

请您尝试关注一下。

df['score']=np.where(df['Day7']>=500,1,"")

或根据 OP 的评论(在此处添加 @anky_91 的增强解决方案):

np.where((df['Day7']>=500)&(df['Day7']<1000),1,"")

当我们打印df 的值时,以下将是输出。

    Cat          Day7    score
0   Advertisir   145    
1   Blogs        56 
2   Business     92 
3   Classfied    23 
4   Continuin    110    
5   Corporate    1974     1

【讨论】:

  • 是的,这也是 np.where 的一个很好的用例。 +1
  • @anky_91,谢谢哥们的鼓励,向所有伟大的(你也是其中之一)熊猫学习,干杯
  • 哈哈,我离得不近。 :D 我们都在学习。 :) 谢谢
  • @MDSAQUIBNASIRKHAN 使用np.where((df['Day7']&gt;=500)&amp;(df['Day7']&lt;1000),1,"")
  • @MDSAQUIBNASIRKHAN 与您在 np.where 中所做的相同,但这次使用 np.select 处理多个条件:
【解决方案2】:

你已经成功了一半。只需使用df.loc[mask, "Score"] = 1

import numpy as np
import pandas as pd

df = pd.DataFrame({"Day7":np.random.rand(5)*1000,
                   "Score": np.random.rand(5)})
print(df)
df.loc[(df.Day7>=500), "Score"] = 1
print(df)

【讨论】:

    【解决方案3】:
    df = df.assign(Score=0)
    df.Score = df.Day7 >= 500
    

    【讨论】:

      猜你喜欢
      • 2014-11-16
      • 2022-11-13
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      • 2015-06-08
      • 2017-01-02
      相关资源
      最近更新 更多