如何使用索引从数据框中获取值?

时间:2019-11-04 14:26:17

标签: python python-3.x pandas numpy

我有一个数据框:

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 个答案:

答案 0 :(得分:4)

您可以使用的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

答案 1 :(得分:0)

您是否要从“数据”列中获取非零值或在“数据”列中获取至第一个零值?

如果需要,这会将非零值附加到新的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)