熊猫根据索引标签选择特定列中的值[重复]

Posted

技术标签:

【中文标题】熊猫根据索引标签选择特定列中的值[重复]【英文标题】:Pandas Select a value in a specific column based on the index label [duplicate] 【发布时间】:2020-02-19 21:06:26 【问题描述】:

所以问题其实是这样的:

我创建了(从熊猫文档直接复制粘贴)数据框:

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 的可能性

“真正的”问题是编写一个类,它根据提供的机场名称保存坐标(纬度、经度列):(这仍然有点令人困惑)

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 

非常感谢您的帮助:)!!

【问题讨论】:

df.iloc[1,1] 将给出第二列,第二行的值。或者,如果您想要 col1=2 的 col2 值,则 x=df.loc[df.col1==2, 'col2'].iloc[0] x = df.at[1, 'col2'] 是的,但如果您只知道一列的值,但想为变量分配同一行另一列的值:/ 希望这有意义... 太棒了,我需要长时间输入我的回复!我会尝试这些变化:) 非常感谢 【参考方案1】:

这应该可以为您解决问题(仅获取过滤后的 pandas 的值):

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

输出:

4

[Program finished]

【讨论】:

太好了,非常感谢! 知道如何不返回 DataFrame-Object 而是返回浮点数吗?将其转换为浮点数似乎不起作用 是的,根据上述 - x.to_list()[0]。然后你会得到返回结果的第一个值。 谢谢:) 现在可以了【参考方案2】:

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

【讨论】:

以上是关于熊猫根据索引标签选择特定列中的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据索引在熊猫数据框中查找特定列的值[重复]

根据熊猫中多列的条件(最大值)替换列中的值

使用熊猫替换列中的值时出错[重复]

如果特定列中的值不是熊猫数据框中的整数,则删除行

如何获取熊猫数据框中的行,列中具有最大值并保留原始索引?

如何从熊猫框架中的特定列中提取numpy数组并将它们堆叠为单个numpy数组[重复]