python - 如何从 Pandas DataFrame 中的一行获取值?
问题描述
我有一个包含一行的熊猫数据框。我知道这一行中的列名是什么。我想从该行的每个单元格中提取值(只是值,而不是类型或其他元数据)。我该怎么做呢?我正在使用 Python 3。
我尝试了以下方法,但总是失败,因为您不能使用列。
print(data_frame.head().values['ColumnName'])
所以然后我尝试了这个,它给了我 ColumnName 的值,但随后崩溃了。
print(data_frame.iloc[0]['ColumnName'])
文件“/usr/local/lib/python3.8/dist-packages/pandas/core/indexing.py”,第 895 行,在getitem中 返回 self._getitem_axis(maybe_callable,axis=axis) 文件“/usr/local/lib /python3.8/dist-packages/pandas/core/indexing.py”,第 1501 行,在 _getitem_axis self._validate_integer(key, axis) 文件“/usr/local/lib/python3.8/dist-packages/pandas/ core/indexing.py",第 1444 行,在 _validate_integer 中引发 IndexError("single positional indexer is out-of-bounds") IndexError: single positional indexer is out-of-bounds
如果我遍历它,我可以让它工作,但我不需要或不想要这个,因为我只有一行。
for x in data_frame.itertuples(index=False):
print(x.ColumnName1)
print(x.ColumnName2)
我还能够得到一些东西来为我提供价值以及一堆其他元数据,但不幸的是我不记得我用什么代码来获得它。
我想要做的就是这样并获得 ColumnName 的值。
data_frame[0]['ColumnName']
这可能吗?
编辑这里是代码。它调用 SQL 数据库中的存储过程。
query = "EXEC p_get_data @id = '{0}'".format(id)
connection_string = get_connection_string()
engine = sqlalchemy.create_engine(connection_string)
data_frame = pd.read_sql_query(query, engine)
data_frame.reset_index(inplace=True)
#print(data_frame.loc[0]['ColumnName1'])
#print(data_frame.loc[0, 'ColumnName1'])
#print(data_frame['ColumnName1'].values[0])
#print(data_frame['ColumnName1'].iloc[0])
#print(data_frame.iat[0, data_frame.columns.get_loc('ColumnName1')])
print(data_frame['ColumnName1'][0] )
存储过程
ALTER PROCEDURE [dbo].[p_get_data]
@id varchar(200)
AS
SELECT A.ColumnName1, E.ColumnName2
FROM E (NOLOCK)
INNER JOIN A (NOLOCK) ON E.PrimaryKey = A.PrimaryKey
WHERE Id = @id
AND A.Type = 'test'
数据如下所示:(ColumnName1 是一个整数,ColumnName2 是一个 varchar
ColumnName1 ColumnName2
---------------------------
1 ABCDE1234
解决方案
如果它是单行,你应该可以使用这样的东西:
>>> data_frame['colName'].values[0]
Out[8]: 1
或者,
>>> data_frame['colName'].iloc[0]
Out[9]: 1
或者,
>>> data_frame.iloc[0, data_frame.columns.get_loc('colName')]
Out[11]: 1
或者,
>>> data_frame.iat[0, data_frame.columns.get_loc('colName')]
Out[12]: 1
或者,
>>> data_frame.loc[0, 'colName']
Out[13]: 1
推荐阅读
- javascript - 使用 HTML5 画布调整图像大小
- r - 在 R 中格式化图形
- c - 为什么当将 void 传递给 int 数组时它不起作用我的编译器说“错误:无效的初始化程序”
- c++ - Storing an std::assume_aligned pointer C++ 20
- vb.net - 获取 ClickOnce 应用的发布版本号
- r - R上的ggplot2出现ggforce facet_zoom错误
- spring - 为什么 BeanFactoryPostProcessor 接口中有 post 这个词?
- python - rasa 从自定义操作中填充插槽
- printf - 将文本文件复制到 C 中的另一个文本文件时删除尾随空格
- javascript - 将按钮单击时间添加到倒计时计时器