[英]How to get value from a row in Pandas DataFrame?
我有一個包含一行的 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中返回 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 是 integer,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
假設您有以下 DataFrame:
In [1]: import pandas as pd
In [5]: df = pd.DataFrame({"ColumnName1":[1],"ColumnName2":['text']})
然后你有:
In [6]: df
Out[6]:
ColumnName1 ColumnName2
0 1 text
如果你想從第一行獲取值,你只需要使用:
In [9]: df.iloc[0]
Out[9]:
ColumnName1 1
ColumnName2 text
Name: 0, dtype: object
或者:
In [10]: df.iloc[0,:]
Out[10]:
ColumnName1 1
ColumnName2 text
Name: 0, dtype: object
如果你想得到一個數組,你可以使用:
In [11]: df.iloc[0].values
Out[11]: array([1, 'text'], dtype=object)
如果您想要單個單元格中的值,只需使用:
In [14]: df.iloc[0,0]
Out[14]: 1
In [15]: df.iloc[0,1]
Out[15]: 'text'
甚至有:
In [22]: df.ColumnName1[0]
Out[22]: 1
In [23]: df.ColumnName2[0]
Out[23]: 'text'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.