Как вы получаете значение из фрейма данных, используя индекс? - PullRequest
3 голосов
/ 04 ноября 2019

У меня есть фрейм данных:

test      data
 1         11
 1         12
 1         0
 1         15
 1         16
 1         0

Итак, я пытаюсь получить значение, которое находится до 0

    zero_indexes = list(input_with[input_with['data'] == 0].index)
    df2 = pd.DataFrame()
    for each_zero_index in zero_indexes:
       value = input_with.loc[each_zero_index - 1: each_zero_index]
        if(value != 0):
              df1 = input_csv.loc[each_zero_index - 3: each_zero_index]
              df2 = df2.append(df1) 
df2.to_csv('final_2.csv')

Здесь я не получаю value как только возвращается df. Может ли кто-нибудь помочь мне с этим?

Ответы [ 2 ]

4 голосов
/ 04 ноября 2019

IIUC вы можете использовать:

df.loc[df.data.eq(0).shift(-1).fillna(False), 'data']

1    12
4    16
Name: data, dtype: int64

Обновление на основе вашего комментария:

df.loc[df.data.eq(0).shift(-1).astype(bool).idxmax(), 'data']
# 12
0 голосов
/ 04 ноября 2019

Вы хотите получить значения из столбца «данные», которые являются ненулевыми ИЛИ, получить значения до первого нуля в столбце «данные»?

Это добавляет ненулевые значения к новомуDataFrame, если это то, что вы хотите:

index=data.index[data['data'] != 0].tolist()
print(index)
data2=pd.DataFrame([])
for i in index:
    x=data.loc[i,'test']
    y=data.loc[i,'data']
    df=pd.DataFrame({'test':[x],
                     'data':[y]})
    data2=data2.append(df,ignore_index=True)
print(data2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...