【问题标题】:Import csv file with sep=';' to python by columns - Pandas Dataset使用 sep=';' 导入 csv 文件按列到 python - Pandas 数据集
【发布时间】:2017-10-19 06:57:48
【问题描述】:

我有一个这样的 csv 文件:

 ATTRIBUTE_1;.....;ATTRIBUTE_N  
 null;01;M;N;;N;1108;1;F205;;N;F;13;;N;S;2;N;6000000;;A010;40;B;2;10;42;N;;61;MI;01;N;N;S;;-1;N;N;01;;;;;;;;;;;;;;;;;;;;;;;;;;778,69
            null;01;M;N;;N;1108;1;F205;;N;F;13;;N;S;2;N;6000000;;A010;40;B;2;10;42;N;;61;MI;01;N;N;S;;-1;N;N;01;;;;;;;;;;;;;;;;;;;;;;;;;;778,71
            null;01;M;N;;N;1108;1;F205;;N;F;13;;N;S;2;N;6000000;;A010;40;B;2;10;42;N;;61;MI;01;N;N;S;;-1;N;N;01;;;;;;;;;;;;;;;;;;;;;;;;;;778,72

当我尝试用这个命令在 python 中导入时:

data = pd.read_csv(r"C:\...\file.csv")

我的输出是这样的:

0    null;01;M;N;;N;1108;1;F205;;N;F;13;;N;S;2;N;60...

如何按列导入 csv?像这样:

ATTRIBUTE_1   ATTRIBUTE_2 ....  ATTRIBUTE_N
   NULL            01              778,69
   NULL            01              778,71
   ...
   NULL            03               775,33

【问题讨论】:

    标签: python-3.x pandas csv import-csv


    【解决方案1】:

    你的每一行都以"开头和结尾有问题,所以是必要的参数quoting=3,意思是设置QUOTE_NONE

    df = pd.read_csv('file.csv', sep=';', quoting=3)
    #strip " from first and last column 
    df.iloc[:,0] = df.iloc[:,0].str.strip('"')
    df.iloc[:,-1] = df.iloc[:,-1].str.strip('"')
    #strip " from columns names 
    df.columns = df.columns.str.strip('"')
    

    print (df.head())
    
      SIGLA TARGA  CATEGORIA TARIFFARIA - LIVELLO 3 SESSO  \
    0        null                                 1     M   
    1        null                                 1     M   
    2        null                                 1     M   
    3        null                                 1     M   
    4        null                                 1     M   
    
      RCA - PATTO PER I GIOVANI  VALORE FRANCHIGIA TIPO TARGA  CILINDRATA  \
    0                         N                NaN          N        1108   
    1                         N                NaN          N        1108   
    2                         N                NaN          N        1108   
    3                         N                NaN          N        1108   
    4                         N                NaN          N        1108   
    
       CODICE FORMA CONTRATTUALE RCA - RECUPERO COMUNE PRA  \
    0                          1                      F205   
    1                          1                      F205   
    2                          1                      F205   
    3                          1                      F205   
    4                          1                      F205   
    
       CODICE WORKSITE MARKETING      ...       Unnamed: 55 Unnamed: 56  \
    0                        NaN      ...               NaN         NaN   
    1                        NaN      ...               NaN         NaN   
    2                        NaN      ...               NaN         NaN   
    3                        NaN      ...               NaN         NaN   
    4                        NaN      ...               NaN         NaN   
    
       Unnamed: 57  Unnamed: 58 Unnamed: 59 Unnamed: 60  Unnamed: 61 Unnamed: 62  \
    0          NaN          NaN         NaN         NaN          NaN         NaN   
    1          NaN          NaN         NaN         NaN          NaN         NaN   
    2          NaN          NaN         NaN         NaN          NaN         NaN   
    3          NaN          NaN         NaN         NaN          NaN         NaN   
    4          NaN          NaN         NaN         NaN          NaN         NaN   
    
       Unnamed: 63  PREMIO FINALE  
    0          NaN         778,69  
    1          NaN         778,70  
    2          NaN         778,71  
    3          NaN         778,72  
    4          NaN         778,73  
    
    [5 rows x 65 columns]
    

    【讨论】:

    • 我可以尝试使用 sep=';'但输出始终是具有 1 列的 pandas 数据框
    • 如果添加参数header=None, skiprows=1它是如何工作的?如果与数据大小不同,这些参数会省略列名称
    • 情况没有改变,总是一列数据框。可能是很多';;;;'的错在记录结束时?
    • 完美!谢谢你。另一个问题!如果已经按列构建了 csv。如何以相同的方式导入它?
    • 不知道懂不懂,能多解释一下吗?你有类似的csv吗?还是别的什么?
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 2020-12-08
    • 2019-08-17
    • 1970-01-01
    • 2013-02-19
    • 2020-02-22
    • 2020-07-02
    • 2020-02-17
    相关资源
    最近更新 更多