回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我是python和pandas的新手,我正在尝试操作csv数据文件。我加载两个数据帧一个包含关键字的列,另一个包含“id”和“word”列的“bagOfWords”。我要做的是在第一个dataframe中添加一个列,该列的关键字id为“list string”,如“[1,2,8,99…]”。在</p>
<p>这就是我目前所想到的</p>
<pre><code>websitesAlchData = pd.io.parsers.read_csv('websitesAlchData.csv', sep=';', index_col='referer', encoding="utf-8")
bagOfWords = pd.io.parsers.read_csv('bagOfWords.csv', sep=';', header=0, names=["id","words","count"], encoding="utf-8")
a = set(bagOfWords['words'])
websitesAlchData['keywordIds'] = "[]"
for i in websitesAlchData.index
keywords = websitesAlchData.loc[i,'keywords']
try:
keywordsSet = set([ s.lower() for s in keywords.split(",") ])
except:
keywordsSet = set()
existingWords = a & keywordsSet
lista = []
for i in bagOfWords.index:
if bagOfWords.loc[i,'words'] in existingWords:
lista.append(bagOfWords.loc[i,'id'])
websitesAlchData.loc[i,'keywordIds'] = str(lista)
print(str(lista))
print(websitesAlchData.loc[i,'keywordIds'])
websitesAlchData.reset_index(inplace=True)
websitesAlchData.to_csv(path_or_buf = 'websitesAlchDataKeywordCode.csv', index=False, sep=";", encoding="utf-8")
</code></pre>
<p>for循环末尾的两个打印结果给出了预期的结果,但是当我试图打印整个数据帧“websitesAlchData”时,“keywordIds”列仍然是“[]”,因此它也在结果的.csv中。在</p>
<p>我的猜测是我在某处创建了一个副本,但我不知道在哪里。在</p>
<p>你知道这里有什么不对吗?或者怎么做同样的事情?
谢谢!在</p>
<p>更新:</p>
<p>在网站salchdata.cvs看起来像这样</p>
^{pr2}$
<p>还有一袋词cvc。在</p>
<pre><code>id;index;count
0;word0;11
1;word1;14
2;word2;14
3;word3;14
...
</code></pre>
<p>预期产量</p>
<pre><code>referer;category;keywords;keywordIds
url;int;word0,word2,word3;[0,2,3]
url;int;word1,word3;[1,3]
</code></pre>