熊猫loc()函数

时间:2020-07-22 10:18:24

标签: pandas

我正在尝试从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

我该如何纠正?

2 个答案:

答案 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