我读了“如何从数据帧的单元格中获取值?”以及“如何选择数据框的最后一列”。我有点困惑,什么是2018年接受的方法从熊猫数据帧的单元格获取值,因为get_value
已被弃用,并且在上的留档有点稀疏。我想按标签选择行,按位置/整数选择列。下面我使用iloc
的方法是2018年公认的方法吗?我有这个代码:
import pandas as pd
import random
import string
import csv
import io
## Make a table with random column labels and rows in random order.
s = '\n'.join((
## Separate columns by comma.
','.join((
## Join letters without a separator.
''.join((
## Randomly choose 3 characters for the labels from ascii_letters.
random.choice(
string.ascii_letters) for i in range(3))) for j in range(3))),
## Insert a header to distinguish rows with identical index keys x and y.
'"Header I, II and III"',
## Randomly shuffle the rows under the first header.
'\n'.join(random.sample(('x,0,1', 'y,2,3',), 2)),
## Insert a header to distinguish rows with identical index keys x and y.
'"Header IV, V and VI"',
## Randomly shuffle the rows under the second header.
'\n'.join(random.sample(('x,4,5', 'y,6,7'), 2)),
))
def preprocess(s):
header = ''
for l in csv.reader(io.StringIO(s)):
if len(l) == 1:
header = l[0]
continue
## Append the header to distinguish identical labels x and y.
l[0] = header + '; ' + l[0]
yield l
print(s, end='\n\n')
## Preprocess the string to avoid duplicate row index keys x and y.
df = pd.DataFrame(preprocess(s))
print(df, end='\n\n')
## Set the index to be that of the first column.
df = df.set_index(0)
## First select the column by index using iloc
## and then select the relevant row by index label.
value = df.iloc[:,-1]['Header I, II and III; x']
print(value)
它生成一个字符串s
如下所示:
YuT,Uva,AsE
"Header I, II and III"
y,2,3
x,0,1
"Header IV, V and VI"
y,6,7
x,4,5
通过函数preprocess
将其转换为数据帧,如下所示:
0 1 2
0 ; YuT Uva AsE
1 Header I, II and III; y 2 3
2 Header I, II and III; x 0 1
3 Header IV, V and VI; y 6 7
4 Header IV, V and VI; x 4 5
它是行的最后一列的值(整数1),标签为Header I, II和III; x
,我对此感兴趣。这是2018年的正确做法吗?
value = df.iloc[:,-1]['Header I, II and III; x']
我刚刚读了一些非常有趣的问题“Loc vs. iloc vs. ix vs. at vs. iat?”从2015年2月和"熊猫iloc vs ix vs loc解释?"从2015年7月开始。如果我能做这样的事就太好了,但是我不能:
value = df.at['Header I, II and III; x', -1]
value = df['Header I, II and III; x'][-1]
此解决方案肯定有效:
value = df.at['Header I, II and III; x', df.columns[-1]]
对于像我这样喜欢老式词典的人,如果数据帧不包含重复的行标签,也可以执行以下操作,这会阻止转置
工作:
d = df.transpose().to_dict('list')
value = d['Header I, II and III; x'][-1]
第一件事是第一件事ix
已被弃用,但ix
允许您混合使用标签和索引器,并对传递的内容进行了大量猜测。
在今天的时代(当前的稳定版本是v0.22
),ix
被弃用了,所以坚持使用显式的标签或基于位置的索引器:loc
用于基于标签的切片,iloc
用于基于索引的切片切片;at
用于基于标签的项访问,iat
用于基于索引的项访问。
如果您知道标签是什么,请使用at
访问单个项目-
df.at['Header I, II and III; x', df.columns[-1]]
如果您知道位置,请使用iat
-
df.iat[2, -1]
通常,当您想要访问单个元素时,请使用*at
,当您想要访问行/列切片时,请使用*loc
。
我构建了一个条件,从我的数据框中提取一行: 现在我想从特定列中获取一个值: 但结果,我得到了一个包含一行和一列(即一个单元格)的数据帧。这不是我需要的。我需要一个值(一个浮点数)。我怎样才能在熊猫身上做到这一点?
完全修改,请重新阅读 你好,我使用的主题显示页面的标题,而不是面包屑中的菜单标签。我试图让面包屑显示相关的菜单标签,如果它是可用的,如果不是,则默认为page_title。 我想出了一些我认为接近的代码。第4行///$ menu _ items = WP _ get _ nav _ menu _ items($ slug);返回null,它应该返回包含当前文章的$slug的导航项。显然,有些事情我
问题内容: 我构造了一个条件,可以从我的数据帧中准确提取一行: 现在,我想从特定列中获取一个值: 但是结果是我得到了一个包含一行和一列( 即 一个单元格)的数据框。这不是我所需要的。我需要一个值(一个浮点数)。我该怎么做在熊猫里? 问题答案: 如果您的DataFrame仅包含一行,则使用,作为Series访问第一行(唯一),然后使用列名访问值:
问题内容: 我想从RichTextArea获取光标位置或位置。我不知道如何在没有任何鼠标事件的情况下获取当前光标位置。例如,TextArea具有方法getCursorPos(),但是RichTextArea没有诸如TextArea这样的方法。有人知道吗 请帮我… 提前致谢… 问题答案: 如果要在RichTextArea中的光标位置插入某些内容,可以使用格式化程序来完成: 要使用JavaScript
我在R中有一个数据帧,我想根据两个列表中的行和列的特定匹配来设置值。 以下是我必须遵循的流程。我有一个数据框,如下所示 我有一个函数,它将列名作为输入,并返回一个与该列名关联的值。例如:一些_函数(“test.var1.t1”)可能返回10的值。 我有一些行名和列名的列表。我需要检查列表中的每个行名称和列名,将它们匹配在一起,计算匹配列的函数,并将值发布到相应的单元格中的数据框中。例如 行名称列表
我对spark数据帧的分区数量有疑问。 如果我有包含列(姓名、年龄、id、位置)的Hive表(雇员)。 如果雇员表有10个不同的位置。因此,在HDFS中将数据划分为10个分区。 如果我通过读取 Hive 表(员工)的整个数据来创建 Spark 数据帧(df)。 Spark 将为数据帧 (df) 创建多少个分区? df.rdd.partitions.size = ??