如何使用Pandas从CSV文件中选取单行及多列并扩展列数?
解决Pandas选取单行+指定多列的问题
嘿,看你已经玩得很溜Pandas了,现在想搞个特殊的CSV分析:选指定单行(澳大利亚)加上特定两列,还打算后续扩展列数对吧?不过你当前的代码里有点小逻辑问题,导致最后输出的是澳大利亚那一行的所有列内容,咱们来调整下。
问题出在哪?
你这段代码里:
df3 = df[df.columns[0:3]] df3=df.loc["Australia"]
先筛选了前3列赋值给df3,但紧接着又用df.loc["Australia"]把df3覆盖成了澳大利亚的整行数据,之前的列筛选等于白做啦!
修正后的代码方案
咱们可以直接用.loc同时指定目标行和目标列,这样更清晰,也能满足你后续扩展列数的需求:
方法1:指定具体列名(推荐,可读性更高)
import pandas as pd df = pd.read_csv("UNdata_Export_20180402_123348163.csv") df = df.set_index(["Country or Area"]) # 选取澳大利亚的行,以及Year、Count这两列 df3 = df.loc["Australia", ["Year", "Count"]] print(df3)
后续要扩展列数的话,直接在列表里加列名就行,比如["Year", "Count", "Rate"]。
方法2:按列的位置范围选取
如果你不确定列名,只想取前N列,也可以这么写:
import pandas as pd df = pd.read_csv("UNdata_Export_20180402_123348163.csv") df = df.set_index(["Country or Area"]) # 选取澳大利亚的行,以及前2列(索引0到1,左闭右开) df3 = df.loc["Australia", df.columns[0:2]] print(df3)
要扩展列数的话,调整切片范围就行,比如0:3就能取前3列。
这样输出的结果就只会是你想要的单行+指定列的数据啦!
内容的提问来源于stack exchange,提问作者user9454269
相关产品推荐
相关产品推荐

