python-3.x - 值更改时拆分时间序列数据帧
问题描述
我有一个数据框,它对应于运动中对象的纬度/经度。这个对象从一个地方到另一个地方,我创建了一个列来引用他每秒所处的位置。我想拆分那个数据框,所以当对象进入一个地方,离开另一个地方时,我将有两个单独的数据框。“无”意味着他在两个地方之间
我的实际代码:
def cut_df2(df):
df_copy = df.copy()
#check if change of place
df_copy['changed'] = df_copy['place'].ne(df_copy['place'].shift().bfill()).astype(int)
last = 0
dfs= []
for num, line in df_copy.iterrows():
if line.changed:
dfs.append(df.iloc[last:num,:])
last = num
# Check if last line was in a place
if line.place != 'None':
dfs.append(df.iloc[last:,:])
df_outs= []
# Delete empty dataframes
for num, dataframe in enumerate(dfs):
if not dataframe.empty :
if dataframe.reset_index().place.iloc[0] != 'None':
df_outs.append(dataframe)
return df_outs
它不适用于大数据集,但适用于简单的示例,我不知道为什么,有人可以帮助我吗?
解决方案
尝试改用这个: https ://www.geeksforgeeks.org/split-pandas-dataframe-by-rows/
iloc 是拆分数据帧的好方法 df1 = datasX.iloc[:, :72] df2 = datasX.iloc[:, 72:]