当我在Pandas中读取csv时,挤压设置为True,这使得数据帧不是序列

2024-06-01 07:44:49 发布

您现在位置:Python中文网/ 问答频道 /正文

在尝试执行压缩时能够导入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()

这是我所期望的,至少我记得我知道输出不是一个数据帧,而是更像一个系列

我原以为它会像一个系列,而不是像数据帧,看起来像这样

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

这就是错误所在

但是,我收到了一个错误


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

收到错误



    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.



我也试过这句话,但看起来也不像预期的那样

    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()

注意:下面是非图片数据帧

链接到实际数据帧csvcsv on github



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

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

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

使用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()

    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

正如Gregor所指出的,我正在尝试的将不适用于多个列,但如果我只使用两列创建新的csv,一列用于索引,另一列则有效

enter image description here

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

Tags: csv数据nameimportdataframereadashead