你好漂亮的人!
dict = {'Awesome' : 'Sauce', 'Foo' : 'Barr'}
Col A Col B
1 'This is Awesome'
2 'I really foo him'
我试图找到迭代数据集/帧的最pythonic方式,并返回任何字符串与dict的值匹配。
因此,对于数字1,我想在c列中返回Sauce,并且2' barr'在相应的行但在col c。
如果重要的话,我正在处理csv / excel文件。
任何帮助将不胜感激。我很高兴使用Pandas和NP库。
编辑温:
ID Name of Course
0 Super Event Training: English Event...
1 Start with our Maths Training...
2 Live online Biology Training...
3 Maths throughout time...
4 Online Q&A Webinar: History..
5 Start with our Creative ...
6 Spring Conf with Author
7 Physics in our age ...
8 Spring Conf
9 Start with our educational items...
10 Education delivery in India...
11 English IELTS, Access to University..
12 Our Core Products for Empowerment..
我有一个像这样的DF,持续大约500行,我在API的帮助下抓取,我需要将这个自由格式文本转换为我的字典中的值。我所做的是识别出我的关键值并分配给dict值的关键词,因此我们可以分析数据。
也许使用dict不是最好的方法吗?任何建议将不胜感激。
DN。
答案 0 :(得分:3)
您只能使用python
[''.join(z) for z in [[y[1] if y[0] in x else '' for x in df['Col B'] ] for y in d.items()]]
Out[22]: ['Sauce', 'Barr']
答案 1 :(得分:2)
因此,如果您可以逐行读取csv(或将其拆分到可以访问b列中值的位置),下面将为您提供B列中与键匹配的句子中所有值的列表词典。
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double
它的工作原理是使用word_dict = {'Awesome' : 'Sauce', 'Foo' : 'Barr'}
s1 = 'This is Awesome'
matches = [x for x in s1.split() if x in dict.keys()]
>> matches = ['Awesome']
将句子分成单词。然后列表推导迭代生成的单词列表并检查它是否是字典中的键,如果它是键,则将其添加到新列表中,如果不是键,则将其忽略。
答案 2 :(得分:1)
这样的东西?
def get_col3(text,d):
ret = ""
keys = list(d.keys())
vals = list(d.values())
for key in keys:
if key.lower() in text.lower():
idx = keys.index(key)
ret+=vals[idx]+" "
return ret
d = {'Awesome' : 'Sauce', 'Foo' : 'Barr'}
text1 = 'This is Awesome'
text2 = 'I really foo him'
text3 = 'That was Awesome foo to him'
print(get_col3(text3,d))
答案 3 :(得分:1)
如果要显式迭代字典和Dataframe,可以使用:
mapper = {'Awesome' : 'Sauce', 'Foo' : 'Barr'}
data = {"Col B": ["This is Awesome", "I really foo him"]}
df = pd.DataFrame(data)
for item in mapper:
for i in range(len(df)):
if item.lower() in df["Col B"].iloc[i].lower():
print(mapper[item])