나는 이것을 둘러 보았지만 그것을 찾을 수없는 것 같습니다 (매우 사소한 것임에도 불구하고).
내가 가진 문제는 데이터 프레임의 첫 번째 및 마지막 항목에 대한 열 값을 검색하고 싶다는 것입니다. 하지만 내가 할 경우 :
df.ix[0]['date']
나는 얻다:
datetime.datetime(2011, 1, 10, 16, 0)
하지만 내가 할 경우 :
df[-1:]['date']
나는 얻다:
myIndex
13 2011-12-20 16:00:00
Name: mydate
다른 형식으로. 이상적으로는 데이터 프레임의 마지막 인덱스 값에 액세스하고 싶지만 방법을 찾을 수 없습니다.
인덱스 값으로 열 (IndexCopy)을 만들고 시도했습니다.
df.ix[df.tail(1)['IndexCopy']]['mydate']
그러나 이것은 또한 다른 형식을 생성합니다 (df.tail (1) [ ‘IndexCopy’]는 단순한 정수를 출력하지 않기 때문에).
어떤 아이디어?
답변
이전 답변은 이제 다음으로 대체됩니다 .iloc
.
>>> df = pd.DataFrame({"date": range(10, 64, 8)})
>>> df.index += 17
>>> df
date
17 10
18 18
19 26
20 34
21 42
22 50
23 58
>>> df["date"].iloc[0]
10
>>> df["date"].iloc[-1]
58
내가 생각할 수있는 가장 짧은 방법 .iget()
:
>>> df = pd.DataFrame({"date": range(10, 64, 8)})
>>> df.index += 17
>>> df
date
17 10
18 18
19 26
20 34
21 42
22 50
23 58
>>> df['date'].iget(0)
10
>>> df['date'].iget(-1)
58
또는 :
>>> df['date'][df.index[0]]
10
>>> df['date'][df.index[-1]]
58
.first_valid_index()
및 도 .last_valid_index()
있지만 NaN
s 를 배제할지 여부에 따라 원하는 것이 아닐 수도 있습니다.
그 기억 df.ix[0]
당신에게 먼저 제공하지 않지만, 예를 들어 0에 의해 인덱스를 하나, 위의 경우에, df.ix[0]
생산 것
>>> df.ix[0]
Traceback (most recent call last):
File "<ipython-input-489-494245247e87>", line 1, in <module>
df.ix[0]
[...]
KeyError: 0
답변
팬더 데이터 프레임의 행 인덱스를 정수로 가져 오기에서 @comte의 답변과 dmdip의 답변을 결합
df.tail(1).index.item()
인덱스의 가치를 제공합니다.
지표가되는 것으로 도시 하지 항상 잘 정의가 색인 멀티 또는 인덱스 단 하나 중요하지. 인덱스를 사용하여 데이터 프레임을 수정하면 예기치 않은 동작이 발생할 수 있습니다. 다중 인덱싱 된 경우의 예가 있지만 단일 인덱싱 된 경우에도 마찬가지입니다. .
우리가 가지고 있다고
df = pd.DataFrame({'x':[1,1,3,3], 'y':[3,3,5,5]}, index=[11,11,12,12]).stack()
11 x 1
y 3
x 1
y 3
12 x 3
y 5 # the index is (12, 'y')
x 3
y 5 # the index is also (12, 'y')
df.tail(1).index.item() # gives (12, 'y')
인덱스 df[12, "y"]
가 있는 마지막 요소에 액세스하려고 하면
(12, y) 5
(12, y) 5
dtype: int64
index를 기반으로 데이터 프레임을 수정하려고하면 (12, y)
하나가 아닌 두 행을 수정하게됩니다. 따라서 마지막 행의 인덱스 값에 액세스하는 방법을 배웠지 만 동일한 인덱스를 공유하는 여러 항목이있을 수 있으므로 해당 인덱스 를 기반으로 마지막 행의 값을 변경하려는 경우 좋지 않을 수 있습니다. df.iloc[-1]
이 경우 마지막 행에 액세스 하려면 을 사용해야 합니다.
참고
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.item.html
답변
df.tail(1).index
가장 읽기 쉬운 것 같습니다
답변
지금은 너무 늦을 수 있습니다. index
메서드를 사용 하여 DataFrame의 마지막 인덱스를 검색 한 다음 사용 [-1]
하여 마지막 값을 가져옵니다.
예를 들면
df = pd.DataFrame(np.zeros((4, 1)), columns=['A'])
print(f'df:\n{df}\n')
print(f'Index = {df.index}\n')
print(f'Last index = {df.index[-1]}')
출력은
df:
A
0 0.0
1 0.0
2 0.0
3 0.0
Index = RangeIndex(start=0, stop=4, step=1)
Last index = 3
답변
이중 대괄호가있는 .iloc을 원합니다.
import pandas as pd
df = pd.DataFrame({"date": range(10, 64, 8), "not_date": "fools"})
df.index += 17
df.iloc[[0,-1]][['date']]
.iloc에 인덱스 목록 (특히 첫 번째와 마지막 [0, -1])을 제공합니다. 그러면 ‘날짜’열을 요청하는 데이터 프레임이 반환됩니다. [ ‘date’]는 시리즈 ( yuck )를 제공하고 [[ ‘date’]]는 데이터 프레임을 제공합니다.
답변
Pandas는 다음을 허용하는 NumPy 구문을 지원합니다.
df[len(df) -1:].index[0]