如何在数据帧中用数字与单词相乘?

2024-04-25 07:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

print(df.words[0])
[('replacement', 1), ('shaver', 2)]

print(df.words[1])
[('filter', 2), ('purifier', 1), ('please', 2)]

我想创建一个新的专栏,叫做“所有单词”。列应该表示实际字符串,而不是数字。你知道吗

('head', 3) should be: "head,head,head"

示例的所需输出:

print(df.all_words[0])
'replacement, shaver, shaver'


print(df.all_words[1])
'filter, filter, purifier, please, please'

Tags: 数据字符串df数字allfilter单词head
3条回答

您可以使用apply

df = pd.DataFrame(data=[[[('filter', 2), ('purifier', 1), ('please', 2)]]], columns=['words'])
result = df.words.apply(lambda x: ', '.join(word for word, count in x for _ in range(count)))
print(result)

输出

0    filter, filter, purifier, please, please
Name: words, dtype: object

你可以用df.apply()来做这个

作为pd导入

df = pd.DataFrame({'words' : [[('replacement', 1), ('shaver', 2)], [('filter', 2), ('purifier', 1), ('please', 2)]]})

def word_to_words(row):
    words_string = ''
    for tuple_set in row['words']:
        words_string += (tuple_set[0] + ', ') * tuple_set[1]
    return(words_string)

df['all_words'] = df.apply(word_to_words, axis=1)

您需要apply一个函数将元组连接到单个字符串。你知道吗

df['all_words'] = df.words.apply(lambda x: ', '.join(', '.join([y[0]] * y[1]) for y in x))

相关问题 更多 >