【问题标题】:Checking for Specific Value in a Pandas Column and performing further operation检查 Pandas 列中的特定值并执行进一步操作
【发布时间】:2020-12-20 23:22:37
【问题描述】:

我有一个 pandas DataFrame,它有一个名为 is_retweeted 的列。此列中的值为YesNo。如果该值为“是”,我想继续执行 X 型情绪分析(我拥有的代码)。否则,如果值为No,我想继续执行 Y 型情感分析(再次,我拥有的代码)

但是,我无法检查这种情况。我得到了同样的错误here。这里没有解决方案对我的用例有帮助。

如果我这样做,根据here 的建议: s = 'Yes' in tweet_df.is_retweeted print(s)
我得到False 作为输出。

这是数据框的样子(为了便于表示,我没有在这里显示其他列):

tweet_dt is_retweeted
2020-09-01 没有
2020-09-01 没有
2020-09-01 是的

我想根据 'is_retweeted' 列中的值执行以下排序操作:

retweets_nerlst = []
while tweet_df['is_retweeted'] == 'Yes':
  for index, row in tqdm(tweet_df.iterrows(), total=tweet_df.shape[0]):
    cleanedTweet = row['tweet'].replace("#", "")
    sentence = Sentence(cleanedTweet, use_tokenizer=True)

PS:我的代码库可以看到here

【问题讨论】:

标签: python pandas numpy csv data-science


【解决方案1】:

如果我正确理解您的问题,您可以使用带条件的 apply:

tweet_df['result'] = tweet_df.apply(lambda x: sentiment_x(x.text) if x.is_retweeted =='Yes' else sentiment_y(x.text), axis = 1)

假设您的数据框包含您尝试对其进行情感分析的“文本”列,并且您的情感函数返回一个值以存储在我称为“结果”的新列中。

【讨论】:

    【解决方案2】:

    我认为你可以用 np.where 做到这一点:

    import pandas as pd
    import numpy as np
    
    
    def SentimentX(text):
        #your SentimentX code
        return f"SentimentX_result of {text}"
    
    def SentimentY(text):
        #your SentimentY code
        return f"SentimentY_result of {text}"
    
    data={"date":["2020-09-01","2020-09-02","2020-09-03"], "is_retweeted":["No","No","Yes"],'text':['text1','text2','text3']}
    
    df=pd.DataFrame(data)
    
    df['sentiment']=np.where(df["is_retweeted"]=="Yes",df['text'].apply(SentimentX),df['text'].apply(SentimentY))
    print(df)
    

    结果:

             date is_retweeted   text                   sentiment
    0  2020-09-01           No  text1  SentimentY_result of text1
    1  2020-09-02           No  text2  SentimentY_result of text2
    2  2020-09-03          Yes  text3  SentimentX_result of text3
    

    【讨论】:

      猜你喜欢
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 1970-01-01
      相关资源
      最近更新 更多