python - 在引用列名和行号时更新数据框的元素
问题描述
我来自 R 背景,并且习惯于使用以下语法从数据框中检索值:
r_dataframe$some_column_name[row_number]
我可以通过以下语法为数据框赋值:
r_dataframe$some_column_name[row_number] <= some_value
或没有箭头:
r_dataframe$some_column_name[row_number] = some_value
例如:
#create R dataframe data
employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
employ.data <- data.frame(employee, salary, startdate)
#print out the name of this employee
employ.data$employee[2]
#assign the name
employ.data$employee[2] <= 'Some other name'
我现在正在学习一些 Python,从我可以看到从 pandas 数据框中检索值的最直接的方法是:
pandas_dataframe['SomeColumnName'][row_number]
我可以看到与 R 的相似之处。
但是,让我感到困惑的是,在修改/分配 pandas 数据框中的值时,我需要将语法完全更改为:
pandas_dataframe.at[row_number, 'SomeColumnName'] = some_value
阅读这段代码需要更多的注意力,因为列名和行号已经改变了顺序。
这是执行这对操作的唯一方法吗?有没有更合乎逻辑的方法来尊重列名和行号顺序的一致使用?
解决方案
如果我正确理解您的意思,正如@sammywemmy 提到的,您可以使用.loc
and.iloc
获取/更改任何行和列中的值。
如果数据框行的顺序发生变化,您必须定义index
按其索引获取每一行(数据点),即使顺序已更改。
如下所示:
df = pd.DataFrame(index=['a', 'b', 'c'], columns=['time', 'date', 'name'])
现在您可以通过其索引获取第一行:
df.loc['a'] # equivalent to df.iloc[0]
推荐阅读
- java - 如何从 COM-PORT 检索 arudino 传感器数据并将其保存在文本文件中?
- javascript - 在 Angular 中使用来自发布响应的响应数据
- node.js - 无需登录贝宝账户接受信用卡/借记卡付款
- xamarin.android - BufferType.Normal 和 BufferType.Spannable 对 textView 的影响
- java - Android Service queryIntentService 返回空列表
- javascript - NodeJS WebSocket 中的本地持久变量
- python - 如何在 Python 中生成向量
- macos - 如果单击,则 NSViewRepresentable 中的 NSButton 不会给出“视觉反馈”
- django - django 检查约束布尔表达式 [postgresql]
- google-cloud-dataproc - 无法在placement.managedCluster.config 下参数化任何值