【发布时间】:2021-05-29 20:07:45
【问题描述】:
我有一个包含一行的 pandas 数据框。我知道这一行中的列名是什么。我想从该行的每个单元格中提取值(只是值,而不是类型或其他元数据)。我该怎么做呢?我正在使用 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 中 return self._getitem_axis(maybe_callable, axis=axis) _getitem_axis 中的文件“/usr/local/lib/python3.8/dist-packages/pandas/core/indexing.py”,第 1501 行 self._validate_integer(键,轴) _validate_integer 中的文件“/usr/local/lib/python3.8/dist-packages/pandas/core/indexing.py”,第 1444 行 raise IndexError("单个位置索引器越界") IndexError:单个位置索引器超出范围
如果我循环遍历它,我可以让它工作,但我不需要或不想要这个,因为我只有一行。
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['ColumnName'][0]
标签: python python-3.x pandas dataframe