当我在 Pandas 中读取 csv 并挤压设置为 True 时,它​​使数据帧不是系列

joh*_*lor 4 python pandas

尝试执行挤压时能够导入 CSV,但它看起来像一个数据框而不是一个系列?

这就是我尝试过的

import pandas as pd
import numpy as np

dnd_name = pd.read_csv(r"dnd-dataframe.csv", usecols = ["name"], squeeze = True)
dnd_name.head()
Run Code Online (Sandbox Code Playgroud)

这是我所期望的,至少我记得学习输出不是数据框,而是更像一个系列?

我原以为它会像一个系列一样出现,而不像数据框那样,看起来像这样

name    
bam     Bard        Dagger, sling, club          Transmutation, Enchantment
niem    Sorcerer    light crossbow, battleaxe    Necromancy
aem     Paladin     Greataxe                     Abjuration, Conjuration
yaeks   Rogue       club, battleaxe              Conjuration, Evocation, Transmutation
jeeks   Druid       Dagger, Greataxe             Evocation, Transmutation, Necromancy
Name: Type, dtype: object
Run Code Online (Sandbox Code Playgroud)

这是错误

但相反,我收到了一个错误


    import pandas as pd
    import numpy as np
    
    dnd_name = pd.read_csv(r"dnd-dataframe.csv", usecols = ["name"], squeeze = True)
    dnd_name.head()

Run Code Online (Sandbox Code Playgroud)

收到错误



    usecols_dtype = lib.infer_dtype(usecols, skipna=False)
    
    ValueError: 'usecols' must either be list-like of all strings, all unicode, all integers or a callable.



Run Code Online (Sandbox Code Playgroud)

我也尝试过这个措辞但看起来也不如预期

    import pandas as pd
    import numpy as np
        
    dnd_name = pd.read_csv(r"dnd-dataframe.csv", index_col = "name", squeeze = True)
    dnd_name.head()

Run Code Online (Sandbox Code Playgroud)

注:以下非图片数据框

链接到github 上的实际数据框 csv csv



![image dataframe](https://i.stack.imgur.com/GOEAk.png)

Run Code Online (Sandbox Code Playgroud)

我可以正常地将其导入数据框中,然后得到

import pandas as pd
import numpy as np

dnd_df = pd.read_csv(r"dnd-dataframe.csv")
dnd_df.head()


    name    herotype    weapons                      spells
0   bam     Bard        Dagger, sling, club          Transmutation, Enchantment
1   niem    Sorcerer    light crossbow, battleaxe    Necromancy
2   aem     Paladin     Greataxe                     Abjuration, Conjuration
3   yaeks   Rogue       club, battleaxe              Conjuration, Evocation, Transmutation
4   jeeks   Druid       Dagger, Greataxe             Evocation, Transmutation, Necromancy
Run Code Online (Sandbox Code Playgroud)

使用 siamak safari 注释修复导入后

    import pandas as pd
    import numpy as np
        
    dnd_names = pd.read_csv(r"dnd-dataframe.csv", usecols = ["name", "herotype", "weapons", "spells"], squeeze = True)
    dnd_names.head()
Run Code Online (Sandbox Code Playgroud)

    name    herotype    weapons     spells
0   bam     Bard    Dagger, sling, club     Transmutation, Enchantment
1   niem    Sorcerer    light crossbow, battleaxe   Necromancy
2   aem     Paladin     Greataxe    Abjuration, Conjuration
3   yaeks   Rogue   club, battleaxe     Conjuration, Evocation, Transmutation
4   jeeks   Druid   Dagger, Greataxe    Evocation, Transmutation, Necromancy

Run Code Online (Sandbox Code Playgroud)

正如 Gregor 所指出的,我正在尝试的内容不适用于多列,但如果我制作新的 csv,其中只有 2 列,一列用于索引,另一列用于索引,则它可以工作。

在此输入图像描述

dnd_name1 = pd.read_csv(r"dnd-dataframe-v2.csv", index_col = ["name"], squeeze = True)
dnd_name1.head()

name
bam          Bard
niem     Sorcerer
aem       Paladin
yaeks       Rogue
jeeks       Druid
Name: herotype, dtype: object
Run Code Online (Sandbox Code Playgroud)