【发布时间】:2021-10-15 09:47:29
【问题描述】:
我有一个嵌套的 for 循环,它遍历字典并提取特定的数据切片并将切片附加到新字典中。我不确定这是否与附加索引或循环数量有关,或者两者都没有。代码如下所示。
def combine_timesteps(channels, startpoint = 5):
startpoint_start = startpoint
endpoint = None
timestep_dataset = pd.DataFrame({'Discharge': discharge_values_at_strain_times[startpoint:endpoint]}).transpose()
for channel in channels.items():
for i, time_data in enumerate(channel[1]):
data = channel[1][startpoint:endpoint]
time_int_string = str(channel[0]) + ' t-' + str(i)
df_to_append = pd.DataFrame({time_int_string:data})
timestep_dataset = timestep_dataset.append(df_to_append[time_int_string])
print(timestep_dataset)
new_start = startpoint - 1
startpoint = new_start
if endpoint == None:
endpoint = 0
new_end = endpoint - 1
endpoint = new_end
if startpoint == -1:
startpoint = startpoint_start
endpoint = None
break
timestep_dataset_formatted = timestep_dataset.transpose()
return timestep_dataset_formatted
但是,每当发生新的追加时,它会将追加的数据向下滑动,其数量 NaN 值等于前面的起点整数,如下所示。
Discharge 9.913190 9.908002 9.902636 9.897269 9.891902
Channel 750 t-0 NaN NaN NaN NaN NaN
Channel 750 t-1 NaN NaN NaN NaN 259.839939
Channel 750 t-2 NaN NaN NaN 274.439453 259.839939
Channel 750 t-3 NaN NaN 269.095527 274.439453 259.839939
Channel 750 t-4 NaN 363.006610 269.095527 274.439453 259.839939
Channel 750 t-5 977.719896 363.006610 269.095527 274.439453 259.839939
Channel 1300 t-0 NaN NaN NaN NaN NaN
Channel 1300 t-1 NaN NaN NaN NaN 325.599363
Channel 1300 t-2 NaN NaN NaN 420.957686 325.599363
Channel 1300 t-3 NaN NaN 376.701738 420.957686 325.599363
Channel 1300 t-4 NaN 444.503183 376.701738 420.957686 325.599363
Channel 1300 t-5 964.735686 444.503183 376.701738 420.957686 325.599363
所需的输出格式是 t-0 列中的第一个值是第一个非 NaN 值(基本上将每列向上滑动空格直到没有 NaN 值)等等。我不确定为什么首先抓取并附加的数据帧前面有 NaN 值。
Discharge 9.913190 9.908002 9.902636 9.897269 9.891902
Channel 750 t-0 287.678547 264.190236 182.871974 208.402388 246.174055
Channel 750 t-1 259.839939 287.678547 264.190236 182.871974 208.402388
Channel 750 t-2 274.439453 259.839939 287.678547 264.190236 182.871974
Channel 750 t-3 269.095527 274.439453 259.839939 287.678547 264.190236
Channel 750 t-4 363.006610 269.095527 274.439453 259.839939 287.678547
Channel 750 t-5 977.719896 363.006610 269.095527 274.439453 259.839939
Channel 1300 t-0 362.181147 403.321962 423.858839 341.982210 237.443283
Channel 1300 t-1 325.599363 362.181147 403.321962 423.858839 341.982210
Channel 1300 t-2 420.957686 325.599363 362.181147 403.321962 423.858839
Channel 1300 t-3 376.701738 420.957686 325.599363 362.181147 403.321962
Channel 1300 t-4 444.503183 376.701738 420.957686 325.599363 362.181147
Channel 1300 t-5 964.735686 444.503183 376.701738 420.957686 325.599363
感谢您的帮助。
【问题讨论】:
标签: python pandas dataframe append nan