python - 튜토리얼 - 파이썬 특정 행 추출




데이터 프레임 전체의 모든 열에서 마지막 0이 아닌 요소를 찾는 방법은 무엇입니까? (4)

같은 것 :

results = {}
for column in df.columns:
    results[column] = df.loc[df[column]!=0, column].iloc[-1]

이렇게하면 모든 열이 키로 된 사전이 만들어지고 0이 아닌 값이 값으로 사용됩니다.

편집 : 당신이 원한다면 하나의 라이너에 대한 데이터 프레임에 플러스 dict 이해 :

results = pd.DataFrame({column:[df.loc[df[column]!=0, column].iloc[-1]] for column in df.columns})

어떻게하면 데이터 프레임의 모든 열에서 마지막으로 발생하는 0이 아닌 요소를 찾을 수 있습니까?

입력

    A  B
0   0  1
1   0  2
2   9  0
3  10  0
4   0  0
5   0  0

산출

    A  B
0  10  2

다음은 ndarray.argmax 와 고급 색인 생성을 사용하는 한 가지 방법입니다.

first_max = df.values[df.ne(0).values.argmax(0), range(df.shape[1])]
out = pd.DataFrame([first_max], columns=df.columns)
df = pd.DataFrame({'A': [0,0,0,10,0,0] , 'B': [0,2,0,0,0,0]})

first_max = df.values[df.ne(0).values.argmax(0), range(df.shape[1])]
# array([10,  2])
pd.DataFrame([first_max], columns=df.columns)

    A  B
0  10  2

최신 정보

마지막으로 0이 아닌 항목을 찾으려면 다음을 수행하십시오.

row_ix = df.shape[0]-df.ne(0).values[::-1].argmax(0)-1
first_max = df.values[row_ix, range(df.shape[1])]
out = pd.DataFrame([first_max], columns=df.columns)

itertools.dropwhile 사용

주어진

import itertools as it

import pandas as pd


df = pd.DataFrame(
    {"A": [0, 0, 9, 10, 0, 0], 
     "B": [1, 2, 0, 0, 0, 0]}
)

암호

#3                 2                 1 
[next(it.dropwhile(lambda x: x == 0, reversed(col))) for _, col in df.iteritems()]

산출

[10, 2]

세부

DataFrame의 각 열을 사용하여

  1. 역순으로 열을 반복합니다. 예를 들어 [0, 0, 10, 9, 0, 0]
  2. [10, 9, 0, 0] 아닌 첫 번째 요소까지 모두 0을 버립니다 [10, 9, 0, 0]
  3. 반복자에서 다음 요소를 가져옵니다 (예 : 10

0 을 누락 된 값으로 변환하고, 순방향 채우기를 사용하고 마지막 행을 인덱싱하여 마지막으로 정수로 변환 할 수 있습니다.

df = df.mask(df==0).ffill().iloc[[-1]].astype(int)
print (df)
    A  B
5  10  2




dataframe