gpt4 book ai didi

python - 将字典应用回 pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:46 24 4
gpt4 key购买 nike

我有一种不太Pythonic的方法来做我想做的事情,但想知道是否没有更快的方法,因为这不能很好地扩展。

d = {'Text' : pandas.Series([['A','B'],['A','C'],['D']])}
Combined['Text'] = pandas.DataFrame(d)
word_model = {"A": 0.1, "B": 0.25, "C": 0.33, "D":1.01}
Combined['model_score'] = 0
for i in xrange(Combined.shape[0]):
words = Combined['Text'][i]
wordlist = words.split(' ')
for j in xrange(len(wordlist)):
Combined['model_score'][i] = Combined['model_score'][i] + word_model[wordlist[j]]
Combined['model_score'][i] = Combined['model_score'][i]/(j+1)

这给了我们组合['model_score']取值:

0.175
0.215
1.01

最佳答案

当然,这是使用pd.Series.apply的另一种方式。

import pandas as pd

df = pd.DataFrame({'Text': [['A', 'B'], ['A', 'C'], ['D']]})

d = {'A': 0.1, 'B': 0.25, 'C': 0.33, 'D':1.01}

df['Avg Score'] = df['Text'].apply(lambda x: sum(map(d.get, x)) / len(x))

# Text Avg Score
# 0 [A, B] 0.175
# 1 [A, C] 0.215
# 2 [D] 1.010

如果您需要设置默认值 0.5(例如):

df['Avg Score'] = df['Text'].apply(lambda x: sum((d.get(i, 0.5) for i in x)) / len(x))

关于python - 将字典应用回 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com