【发布时间】:2018-01-24 13:11:41
【问题描述】:
我有以下列表
[7, 2, 0, 3, 4, 2, 5, 0, 3, 4]
结果列表是
[1, 2, 0, 1, 2, 3, 4, 0, 1, 2]
用下面的逻辑得到的结果
对于每个值,将差值计算回前一个零(或系列的开头, 以更近者为准)。
我正在尝试实施,但无法获得。
那么如何找到之前的零位,从而得到那个系列呢?
我在下面尝试过,但不知何故失败了,这似乎不是一个好的解决方案
import pandas as pd
df = pd.DataFrame({'X': [7, 2, 0, 3, 4, 2, 5, 0, 3, 4]})
#print(df)
df_series = df['X']
print(df_series.iloc[-1])
target_series = pd.Series([])
#print(target_series)
def calculate_value(i,actual_index):
if(df_series.iloc[i-1] == 0):
if(i < 0):
zero_position = i + df_series.size-1
if(actual_index - 0 < zero_position):
target_series[actual_index]=actual_index+1
return
else:
target_series[actual_index]=zero_position
return
else:
target_series[actual_index]=target_series[actual_index]+1
return
else:
if(i+df_series.size != actual_index):
calculate_value(i-1,actual_index)
for i in df.index:
if(df_series[i]==0 and i!=0):
target_series[i]=0
elif(df_series[i]!=0 and i==0):
target_series[i]=1
else:
calculate_value(i,i)
print(target_series)
【问题讨论】:
-
为什么是 pandas/ 数据框标签?
标签: python algorithm pandas dataframe recursive-datastructures