Python-如何将split()函数应用于数据帧中的整个列

时间:2019-11-19 18:40:25

标签: python pandas

我正在处理python作业,因此我需要分析yelp数据集。以下是数据集的列:

Index(['review_id', 'user_id', 'business_id', 'stars', 'useful', 'funny',
   'cool', 'text', 'date'],
  dtype='object')

以下是数据集中条目的一个示例:

Example of entry

我希望将所有条目按其星级评分(1-5)分组,显示获得该评分的餐厅百分比,最后显示每个星级中评论的平均字数是多少。 “文本”列中的每个值都包含字符串形式的餐厅评论-这些是我需要数的单词。

平均字数是我被困住的地方。我已经成功编写了代码,以找到平均字符数,但没有找到平均字数。请参见以下代码:

reviews_df["review_length"] = reviews_df["text"].apply(len)

def text_length_statistics(reviews_df):
    subgroup_stars = reviews_df.groupby("stars")["review_length"]
    subgroup_statistics = subgroup_stars.agg(["size", "mean"])
    print(subgroup_statistics)

代码产生以下输出:

output

这几乎是完美的,但平均值显示了平均字符数。有人告诉我,将split()函数应用于字符串,然后通过该新字符串运行len()将使我能够计算字符串中的单词数。但是,对于此代码(({reviews_df["review_length"] = reviews_df["text"].apply(len)),我已经通过.apply(len)函数将len应用于数据帧中的整个列-本质上是在列表列表中。 >这不起作用...任何人都可以提供解决方案吗?

2 个答案:

答案 0 :(得分:0)

将lambda函数插入您的apply调用中:

lambda x : len(x.split())

我通常会原样显示 ,并显示输出,但是您无法使用必要的演示数据来完成发布。

答案 1 :(得分:0)

我们也可以按照以下方法进行操作。

reviews_df["review_length"] = reviews_df["text"].str.split(" ").str.len()

希望这会有所帮助