저는 python 및 pandas를 처음 사용하고 있으며 csv 데이터 파일을 조작하려고합니다. 두 개의 데이터 프레임을로드하고 하나는 키워드가있는 열을 포함하고 다른 하나는 "id"및 "word"열이있는 "bagOfWords"입니다. 내가 뭘 해야하는지 "[1,2,8,99 ...]"와 같이 "목록 문자열"에 키워드의 ID로 첫 번째 데이터 프레임에 열을 추가하는 것입니다. 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")
함께 온 것입니다 루프의 끝의 두 개의 인쇄 I 전체 dataframe "websitesAlchData"열 "을 인쇄 할 때 excpected 결과를 제공하지만, keywordIds "는 여전히"[] "이므로 결과 .csv에도 있습니다.
내 생각 엔 내가 어딘가에 복사본을 만들지 만 내가 어디로 갈 수 없는지.
어떤 아이디어가 잘못 되었습니까? 또는 동일한 것을 다른 방법으로 수행하는 방법은 무엇입니까? 감사합니다.
는 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
...
예상 출력 모두 for
루프 i
를 사용에 문제가 확실히있다
referer;category;keywords;keywordIds
url;int;word0,word2,word3;[0,2,3]
url;int;word1,word3;[1,3]
당신이 작은 예제를 제공 할 수 파일? 그리고 그 작은 예제에서 기대되는 결과입니다. 이것은 1 또는 2 라인에서 실행 가능해야하는 것처럼 들립니다. – TomAugspurger
예제 데이터를 추가 했으므로 1-2 줄은 참 좋았을 것입니다. – Bear
파이썬 2.7에서 테스트했을 뿐이지 만'i'와 관련된 변수 섀도 잉/덮어 쓰기가있을 수 있습니다. 'for' 루프의 변수로'i'를 사용합니다. – acushner