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
我更喜欢这个答案,因为它没有使用