【问题标题】:Use of Pandas to slice and create Lists使用 Pandas 切片和创建列表
【发布时间】:2017-01-01 16:19:02
【问题描述】:

在对 csv/pandas/etc 进行一些研究以操作一个巨大的 csv 文件后,我决定使用 pandas 来切分我需要的信息。 现在我可以使用过滤器得到我需要的东西,即“Name”=“Greg”,当列 Name 有 Greg 时,我只看到行。 但是我现在想创建一个包含特定列(即城市)的所有信息的 pyhton 列表。我怎么能那样做? 然后我将只使用 List 进行排序、计数等。

我有什么:

import pandas as pd

all_data = pd.read_csv(
    'myfile.csv',           # file name
    sep=',',                    # column separator
    quotechar='"',              # quoting character
    encoding='utf-16',
    na_values=0,                # fill missing values with 0
    usecols=[0,1,3],          # columns to use
    decimal='.')                # symbol for decimals



slice1 = all_data[all_data['Name'] == 'Greg']
print (slice1)

打印示例(slice1):

【问题讨论】:

    标签: python list pandas dataframe conditional-statements


    【解决方案1】:

    您可以将ixtolist 一起使用:

    #output is Series - column City
    slice1 = all_data.ix[all_data['Name'] == 'Greg', 'City']
    
    #generate list from Series
    L = all_data.ix[all_data['Name'] == 'Greg', 'City'].tolist()
    

    示例:

    import pandas as pd
    
    all_data = pd.DataFrame({'Name':['Greg','Greg','Greg','Adam'],
                             'Coutry':['US','UK','UK','UK'],
                             'City':['LA','LD','RE','LB']},
                             index=[221,564,800,500])
    
    print (all_data)
        City Coutry  Name
    221   LA     US  Greg
    564   LD     UK  Greg
    800   RE     UK  Greg
    500   LB     UK  Adam
    
    slice1 = all_data.ix[all_data['Name'] == 'Greg', 'City']
    print (slice1)
    221    LA
    564    LD
    800    RE
    Name: City, dtype: object
    
    L = all_data.ix[all_data['Name'] == 'Greg', 'City'].tolist()
    print (L)
    ['LA', 'LD', 'RE']
    

    【讨论】:

    • 非常感谢!很棒的输入!看起来 Pandas 不喜欢我的 City Column 的数据格式,因为它收到错误消息: KeyError: 'City' 。知道为什么吗?
    • 在单词 City 之前可能有一些空格,比如 ' City' ?通过print (all_data.columns.tolist())检查它
    • 嗯.. 我得到:['\ufeffCity', 'Name', 'Country']。不知道这是什么\ufeff :(
    • 似乎是一个编码问题。知道如何解决这个问题吗?我将标题的名称从 City 更改为其他名称,但无论如何都不起作用。
    • 是的,完全正确。将参数encoding='utf-16' 添加到read_csv
    猜你喜欢
    • 1970-01-01
    • 2016-01-07
    • 2020-12-27
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 2010-12-14
    相关资源
    最近更新 更多