【问题标题】:Access string in a pandas series访问熊猫系列中的字符串
【发布时间】:2020-12-31 23:22:37
【问题描述】:

我有一个 csv 表,其中有一列(标签)充满了字符串列表。要将其转换为我使用的 pd 系列

 def flatten(series):
  return pd.Series(series.dropna().sum())

tags_sorted = flatten(df['tags'])

现在我想在其中一个列表中搜索系列中的字符串,以便它返回该字符串在列中出现的次数。我找到了这个功能:

def find(series, tag):
  for i in series.index:
    if series[i] == tag: 
        return i
return None

并在我的系列中使用它:

 print(find(tags_sorted, 'romance'))

但它不断返回None,即使该字符串肯定在多个列表中。

我也试过

print(tags_sorted[tags_sorted == "romance"])

print(tags_sorted.loc[tags_sorted == 'romance'])

但那些只返回[]

【问题讨论】:

    标签: python pandas string series


    【解决方案1】:

    我相信,您需要将查找功能更改为:

    def find(series, tag):
        times_occurred = 0
    
        for i in series.index:
            if series[i] == tag:
                times_occurred += 1
    
        return times_occurred
    

    ,如果你想知道特定字符串出现了多少次。

    【讨论】:

    • 有道理!该函数现在返回 0,因此它仍然无法将列表中的字符串与给定字符串匹配:/
    • 有一个我测试过并且似乎有效的例子:df = pd.DataFrame([[1, ["a", "b", "c"]], [2, ["c", "d"]], [3, ["a", "d", "e"]]], columns=["id", "tags"]) 我在那里创建了一个简单的数据框用于测试目的。然后使用tags_sorted = flatten(df['tags']) 最后print(find(tags_sorted, "a")) 命令打印2。所以它似乎对我有用。
    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 2017-11-28
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多