這篇文章是從熊貓到_csv 輸出引用問題的后續(xù)。比如說,我用文本數(shù)據(jù)創(chuàng)建了一個數(shù)據(jù)框。此文本數(shù)據(jù)存儲為字符串列表:In [1]: import pandas as pdIn [2]: text = ['this', 'is', '"out text"'] ...: df_pre = pd.DataFrame(index=['1'], columns=['one','two']) ...: df_pre.loc['1','one'] = 123 ...: df_pre.loc['1','two'] = text檢查預(yù)讀數(shù)據(jù)框的列:In [3]: df_preOut[3]: one two1 123 [this, is, "out text"]In [4]: df_pre.two.iloc[0]Out[4]: ['this', 'is', '"out text"']這正是我想要的:df.two是一個字符串列表,并且保留了字符串元素中的引號。但是當(dāng)我寫入然后將 df 作為 csv 讀取時:In [5]: df_pre.to_csv('foo.txt', index=False)In [5]: df_post = pd.read_csv('foo.txt')我看到df.two已經(jīng)不同代表,以便有更多的現(xiàn)在報價在后-讀取數(shù)據(jù)幀:In [6]: df_postOut[6]: one two0 123 ['this', 'is', '"out text"']和這里:In [7]: df_post.two.iloc[0]Out[7]: '[\'this\', \'is\', \'"out text"\']'這樣做的問題是,如果我想df.two為每一行遍歷列中的每個字符串元素,我必須處理包裝每個元素的附加引號。所以,如果我想計(jì)算“這個”發(fā)生了多少次,使用post數(shù)據(jù)框,我會得到 0。我的問題:為什么會發(fā)生這種情況?我怎樣才能防止它發(fā)生?我已經(jīng)嘗試了所有級別的引用(即 [0,3]),但無濟(jì)于事。我的目標(biāo)是處理多行文本數(shù)據(jù)(標(biāo)記化、詞干提取等),并以 csv 格式保存工作以供以后操作。作為后續(xù),我希望post看起來像pre:前(沒有額外的報價):In [8]: df_preOut[8]: one two1 123 [this, is, "out text"]發(fā)表(附有額外引文):In [9]: df_postOut[9]: one two0 123 ['this', 'is', '"out text"']解決方案df_post.two = df_post.two.apply(eval)
jupyter上pandas to_csv read_csv字符串?dāng)?shù)組中的引號
函數(shù)式編程
2021-11-30 16:35:52