【发布时间】:2018-10-23 11:08:14
【问题描述】:
我有一个数据框,其中一列包含网址。我想将它与字符串值列表进行比较,并在它们匹配的任何地方添加一个数字到一个新列。
该列看起来像这样:
source
www.fox5.com/some_article
www.nyt.com/some_article
www.fox40news.com/some_article
www.cnn.com/another_article
...
我想将其与此列表进行比较:
sources = ['fox', 'yahoo', 'abcnews', 'google', 'cnn', 'nyt', 'nbc',
'washingtonpost', 'wsj', 'huffingtonpost']
如果源值包含在源列中,则将列表位置的相应编号添加到新列。因此,生成的新列将如下所示:
sources sourcenum
www.fox5.com/some_article 1
www.nyt.com/some_article 6
www.fox40news.com/some_article 1
www.cnn.com/another_article 5
... ...
我尝试过使用带有计数的 for 循环:
count = 1
for x in sources:
if x in df.source.values:
df.sourcenum = count
count += 1
但输出全是 0
我也尝试使用 numpys where 但它不接受 10 个参数。
如果这样会更好的话,可以将列表更改为字典
sources = {'fox':1, 'yahoo':2, 'abcnews':3, 'google':4, 'cnn':5, 'nyt':6,
'nbc':7, 'washingtonpost':8, 'wsj':9, 'huffingtonpost':10}
任何帮助将不胜感激,谢谢。
【问题讨论】:
标签: python string list pandas series