我正在尝试从CSV切片项目,这是示例[在此处输入图片描述] [1]
df1 = pandas.read_csv("supermarkets.csv")
df1
ID Address City State Country Name Employees
0 1 3666 21st St San Francisco CA 94114 USA Madeira 8
1 2 735 Dolores St San Francisco CA 94119 USA Bready Shop 15
2 3 332 Hill St San Francisco California 94114 USA Super River 25
3 4 3995 23rd St San Francisco CA 94114 USA Ben's Shop 10
4 5 1056 Sanchez St San Francisco California USA Sanchez 12
5 6 551 Alvarado St San Francisco CA 94114 USA Richvalley 20
df2 = df1.loc["735 Dolores St":"332 Hill St","City":"Country"]
df2
在输出中,我只会得到此输出
City State Country
我该如何纠正?
答案 0 :(得分:0)
您可以在pandas documentation中阅读,.loc[]
可以通过标签或布尔数组访问一组行和列。
您不能直接使用系列中的值进行选择。
在您的示例df1.loc["735 Dolores St":"332 Hill St","City":"Country"]
中,您得到一个空选择,因为只有"City":"Country"
是有效的访问者。
"735 Dolores St":"332 Hill St"
将返回一个空行选择,因为它们不是索引上的标签。
如果需要特定的行,可以尝试使用.iloc[[1,2], "City":"Country"]
通过索引进行选择。
答案 1 :(得分:0)
df.loc
主要基于标签,通常使用索引对行进行切片。在这种情况下,您可以使用数字索引或将地址设置为索引
print(df)
ID Address City State Country Name Employees
0 1 3666 21st San Francisco CA 94114 USA Madeira 8
1 2 735 Dolores San Francisco CA 94114 USA Bready Shop 15
2 3 332 Hill San Francisco CA 94114 USA Super River 25
df2=df.loc[1:2,'City':'Country']
print(df2)
City State Country
1 San Francisco CA 94114 USA
2 San Francisco CA 94114 USA
或
df2=df.set_index('Address').loc['735 Dolores':'332 Hill','City':'Country']
print(df2)
City State Country
Address
735 Dolores San Francisco CA 94114 USA
332 Hill San Francisco CA 94114 USA