熊猫根据索引标签在特定列中选择一个值

时间:2019-10-23 15:04:51

标签: python pandas numpy dataframe indexing

因此,问题实际上是以下内容:

我创建了(从pandas文档中粘贴的直接副本)数据框:

d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)

这将创建一个如下所示的DataFrame :(其中最左边的列是索引)

 col1  col2
0     1     3
1     2     4

然后,我想为我的名字x分配col2和row1的值,即4。但是我想根据col1中的值进行此操作(因为这就是我所知道的值)。这样看起来或多或少是这样的:

x = df.loc[df.col2 == df.loc[df.col1 == 2]]

我知道这没有任何意义,但也许有人理解了这个问题并提出了一个提示:) 也许这很容易做到,但是我现在可以将所有.loc和.iloc可能性都包裹住

“实际”问题是编写一个类,该类根据提供的机场名称保存坐标(lat,lon列):(这仍然有点令人困惑)

def __init__(self, name):
        import pandas as pd
        alleDaten = pd.read_csv("airports.dat", delimiter=",", usecols=[1,6,7])
        alleDaten.columns = ["name","lat","lon"] #rename columns
        self._name = alleDaten.loc[alleDaten.name == "name"] #get name based on the provided name of the airport
        self._x = alleDaten.loc[alleDaten.name == "name", ["lat"]] # get lat based on the provided name
        self._y = alleDaten.loc[alleDaten.name == "name", ["lon"]] # get lon based on the provided name 

非常感谢您的帮助:)!

2 个答案:

答案 0 :(得分:0)

x = df.iloc[1, 1]
编号系统从0开始,因此[1,1]将选择第二行和第二列。

答案 1 :(得分:0)

这应该为您解决问题(仅获取经过过滤的熊猫的价值):

x = df.loc[df.col1 == 2, "col2"]
print(x.to_list()[0])

输出:

4

[Program finished]