我有一个数据框:
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
。有人可以帮我吗?
答案 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)