pandas 解码字符串返回 NaN

use*_*957 4 python decode pandas

我正在 Kaggle 新闻标题数据集上练习:https://www.kaggle.com/aaron7sun/stocknews#Combined_News_DJIA.csv

df = pd.read_csv('./data/Combined_News_DJIA.csv')
Run Code Online (Sandbox Code Playgroud)

当阅读新闻标题的 DataFrame 时,我得到了该系列的格式:

0       b"Georgia 'downs two Russian warplanes' as cou...
1       b'Why wont America & Nato help us? If they w...
2       b'Remember that adorable 9-year-old who sang a...
3       b' U.S. refuses Israel weapons to attack Iran:...
4       b'All the experts admit that we should legalis...
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下内容:

df['Series'].str.decode("utf-8")
Run Code Online (Sandbox Code Playgroud)

然而输出是一个列表NaN。有任何想法吗?在整个 DataFrame 而不仅仅是一个 Series 上实现会很棒。

Roy*_*012 6

您无法从 UTF-8 解码它,因为它已经是一个字符串 - 而不是字节序列。

该文件的内容确实令人困惑:它包含以 开头的字符串"b'...,这会误导用户认为它是字节 - 但事实并非如此。

如果你运行df.Top1[0],你会看到它包含:

'b"Georgia \'downs two Russian warplanes\' as countries move to brink of war"'
Run Code Online (Sandbox Code Playgroud)

并且type(df.Top1[0])只是一个字符串。因此 - 你无法从 UTF-8 解码它。

  • @ohoh7171您可以使用 [`strip`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.strip.html) 修剪它 - `df.Top1.str .strip("b\'\"")` (3认同)