我是新來的蟒蛇和熊貓,我試圖操縱一個CSV數據文件。我加載兩個數據框,其中一個包含帶關鍵字的列,另一個是帶有「id」和「word」列的「bagOfWords」。我想做的是在第一個數據框中添加一列,並在「列表字符串」中加上關鍵字的id,就像這樣「[1,2,8,99 ...]」。Python Pandas DataFrame單元格變化消失
這就是我想出迄今
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")
兩個打印在的結束for循環給excpected結果,但是當我嘗試打印整個數據框「websitesAlchData」列「 keywordIds「仍然是」[]「,因此它也位於生成的.csv中。
我的猜測是我創造了一個副本,但我不能在哪裏。
任何想法這裏有什麼不對或如何做同樣的事情diffrently? 謝謝!
UPDATE:
的websitesAlchData.cvs看起來像這樣
referer;category;keywords
url;int;word0,word2,word3
url;int;word1,word3
...
而且話CVC的袋子。
id;index;count
0;word0;11
1;word1;14
2;word2;14
3;word3;14
...
預計輸出
referer;category;keywords;keywordIds
url;int;word0,word2,word3;[0,2,3]
url;int;word1,word3;[1,3]
你能提供一個小例子你兩個CSV文件?而且你期望從這個小例子中得到輸出。這聽起來好像應該可以在1或2行中完成。 – TomAugspurger
我添加了示例數據,1-2行確實不錯。 – Bear
我只在python 2.7中測試過它,但是可能會有一些變量覆蓋/覆蓋涉及'我'繼續。你使用'i'作爲'for'循環的變量。 – acushner