熊猫根据索引标签选择特定列中的值[重复]
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] 将选择第二行和第二列。
【讨论】:
以上是关于熊猫根据索引标签选择特定列中的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章