首页 > 解决方案 > 值更改时拆分时间序列数据帧

问题描述

我有一个数据框,它对应于运动中对象的纬度/经度。这个对象从一个地方到另一个地方,我创建了一个列来引用他每秒所处的位置。我想拆分那个数据框,所以当对象进入一个地方,离开另一个地方时,我将有两个单独的数据框。“无”意味着他在两个地方之间

我的实际代码:

    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

它不适用于大数据集,但适用于简单的示例,我不知道为什么,有人可以帮助我吗?

标签: python-3.xpandasdataframe

解决方案


尝试改用这个: https ://www.geeksforgeeks.org/split-pandas-dataframe-by-rows/

iloc 是拆分数据帧的好方法 df1 = datasX.iloc[:, :72] df2 = datasX.iloc[:, 72:]


推荐阅读