【问题标题】:Pandas/Python - CSV File - Choosing one row and two or more columnsPandas/Python - CSV 文件 - 选择一行和两列或多列
【发布时间】:2018-04-09 09:52:15
【问题描述】:

所以我现在已经很好地掌握了 Pandas,我正在尝试分析一个 CSV 文件,但希望做一些不同的事情,我看的不是一行一列,而是一行两列,旨在根据 CSV 文件扩展列数。

我的代码是:

import pandas as pd

df = pd.read_csv("UNdata_Export_20180402_123348163.csv")
df = df.set_index(["Country or Area"])
df3 = df[df.columns[0:3]]
df3=df.loc["Australia"]
print(df3)

所以输出是:

                 Year  Count  Rate   Source Source Type
Country or Area                                        
Australia        2010    229   1.0  CTS/NSO          CJ
Australia        2009    263   1.2  CTS/NSO          CJ
Australia        2008    261   1.2  CTS/NSO          CJ
Australia        2007    255   1.2  CTS/NSO          CJ
Australia        2006    281   1.4  CTS/NSO          CJ
Australia        2005    259   1.3  CTS/NSO          CJ
Australia        2004    264   1.3  CTS/NSO          CJ
Australia        2003    302   1.5  CTS/NSO          CJ
Australia        2002    318   1.6  CTS/NSO          CJ
Australia        2001    310   1.6  CTS/NSO          CJ
Australia        2000    302   1.6  CTS/NSO          CJ
Australia        1999    343   1.8  CTS/NSO          CJ
Australia        1998    285   1.5  CTS/NSO          CJ
Australia        1997    321   1.7  CTS/NSO          CJ
Australia        1996    312   1.7  CTS/NSO          CJ
Australia        1995    326   1.8  CTS/NSO          CJ

我很难只选择“年份”和“比率”列,因为上面的代码会打印出特定国家/地区澳大利亚的所有内容。另外,我不太确定如何设置“df3=df[df.columns[0:3]]”。好像如果我更改数字 3,它不会做任何事情。

问题:我如何选择多个特定列,比如两个?从那,我怎么能选择 3 列或更多列?我需要更改哪些值?

我查看了 Python API,但找不到类似的问题。编辑:这个问题与链接问题不同,因为我选择了特定的行和特定的列。据我了解,其他问题的行很好,他们并没有尝试选择特定的行。

【问题讨论】:

标签: python pandas


【解决方案1】:

如果想同时按名称和位置选择,这里有 2 种可能的解决方案:

print (df.columns[:2])
Index(['Year', 'Count'], dtype='object')

#select by names only, for columns get names by select columns by slicing
df3 = df.loc["Australia", df.columns[:2]]

与在索引和列中按名称选择相同:

df3 = df.loc["Australia", ['Count', 'Rate']]

对于按职位选择仅使用ilocget_loc

#select by positions only, for index get position
df3 = df.iloc[df.index.get_loc("Australia"), 0:2]

【讨论】:

  • 嗨,jezrael,谢谢!它工作得很好。我刚刚测试了三列,它也适用!
【解决方案2】:

用于选择前 n 列:

df.iloc[:, :n]

用于根据名称选择一组特定的列:

selection = ['Count',  'Rate']
df[selection]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2014-04-19
    • 2017-06-06
    • 1970-01-01
    相关资源
    最近更新 更多