所以我现在已经很好地掌握了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,但我找不到类似的问题。编辑:这个问题与链接的问题不同,因为我选择了特定的行以及特定的列。根据我的理解,其他问题的行很好,并且他们不会尝试选择特定的行。
答案 0 :(得分:1)
选择前n列:
df.iloc[:, :n]
根据名称选择一组特定的列:
selection = ['Count', 'Rate']
df[selection]
答案 1 :(得分:1)
如果想要按名称和位置一起选择,这里有两种可能的解决方案:
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']]
#select by positions only, for index get position
df3 = df.iloc[df.index.get_loc("Australia"), 0:2]