Python 计算两个不同列中的单词数并按行求和

Python 计算两个不同列中的单词数并按行求和,python,pandas,dataframe,Python,Pandas,Dataframe,我试图计算两个不同列中的字数,并在一个额外的列中保存加法的结果 数据和期望结果的示例: id question answer word_count 1 Lorem ipsum dolor sit amet Lorem ipsum dolor 8 2 Lorem ipsum ipsum 3 3 Lorem ipsum dolor sit Lo

我试图计算两个不同列中的字数,并在一个额外的列中保存加法的结果

数据和期望结果的示例:

id  question                     answer             word_count
1   Lorem ipsum dolor sit amet   Lorem ipsum dolor  8
2   Lorem ipsum                  ipsum              3
3   Lorem ipsum dolor sit        Lorem              5
以下代码不起作用:

df['word_count'] = df[['question', 'answer']].apply(lambda x: len(str(x).split(" ")))
试试这个:

df['word_count'] = df.apply(
    lambda row: len(row['question'].strip().split()) + 
                len(row['answer'].strip().split()), axis=1)
df['word_count'] = df['question'].apply(lambda x: len(str(x).split(" ")))+df['answer'].apply(lambda x: len(str(x).split(" ")))
简而言之,它是如何工作的。df.applyfunc,axis=1为数据框中的每一行应用函数func,并生成一系列结果。如果前导空格和尾随空格是..,则需要条带来切割它们。split生成字符串中单独单词的列表。len计算列表中的元素数。

试试以下方法:

df['word_count'] = df.apply(
    lambda row: len(row['question'].strip().split()) + 
                len(row['answer'].strip().split()), axis=1)
df['word_count'] = df['question'].apply(lambda x: len(str(x).split(" ")))+df['answer'].apply(lambda x: len(str(x).split(" ")))
简而言之,它是如何工作的。df.applyfunc,axis=1为数据框中的每一行应用函数func,并生成一系列结果。如果前导空格和尾随空格是..,则需要条带来切割它们。split生成字符串中单独单词的列表。len计算列表中的元素数。

使用str.len和str.split

例:

输出:

   id                    question             answer  word_count
0   1  Lorem ipsum dolor sit amet  Lorem ipsum dolor           8
1   2                 Lorem ipsum              ipsum           3
2   3       Lorem ipsum dolor sit              Lorem           5
将str.len与str.split一起使用

例:

输出:

   id                    question             answer  word_count
0   1  Lorem ipsum dolor sit amet  Lorem ipsum dolor           8
1   2                 Lorem ipsum              ipsum           3
2   3       Lorem ipsum dolor sit              Lorem           5
试试这个:

df['word_count'] = df.apply(
    lambda row: len(row['question'].strip().split()) + 
                len(row['answer'].strip().split()), axis=1)
df['word_count'] = df['question'].apply(lambda x: len(str(x).split(" ")))+df['answer'].apply(lambda x: len(str(x).split(" ")))
试试这个:

df['word_count'] = df.apply(
    lambda row: len(row['question'].strip().split()) + 
                len(row['answer'].strip().split()), axis=1)
df['word_count'] = df['question'].apply(lambda x: len(str(x).split(" ")))+df['answer'].apply(lambda x: len(str(x).split(" ")))

拆分并添加两列,然后应用len:


拆分并添加两列,然后应用len:


我们可以使用str.count和sum来计算空字符串:

或者我们可以计算单词字符数\w:

输出:

   id                    question             answer  word_count
0   1  Lorem ipsum dolor sit amet  Lorem ipsum dolor           8
1   2                 Lorem ipsum              ipsum           3
2   3       Lorem ipsum dolor sit              Lorem           5

我们可以使用str.count和sum来计算空字符串:

或者我们可以计算单词字符数\w:

输出:

   id                    question             answer  word_count
0   1  Lorem ipsum dolor sit amet  Lorem ipsum dolor           8
1   2                 Lorem ipsum              ipsum           3
2   3       Lorem ipsum dolor sit              Lorem           5

我更喜欢这个答案,因为它没有使用