如何基于特定规则拆分Pandas DataFrame的XY列为X和Y列?
Pandas生成滑动窗口列解决方案
假设你的DataFrame有一列名为XY的数值型数据,要生成X(连续20个元素的列表)和Y(对应第21个元素)两列,可以用以下方法实现:
代码实现
import pandas as pd # 替换成你的实际DataFrame df = pd.DataFrame({'XY': range(100)}) # 示例数据,包含100个连续数值 window_size = 20 # 生成X列:每行是XY列中连续20个元素的列表 df['X'] = [df['XY'].iloc[i:i+window_size].tolist() for i in range(len(df) - window_size)] # 生成Y列:对应每行X窗口之后的第1个元素 df['Y'] = df['XY'].iloc[window_size:].tolist() # 移除无对应Y值的行(最后20行) df = df.dropna(subset=['Y']).reset_index(drop=True)
关键说明
window_size设为20,控制滑动窗口的长度;- 列表推导式遍历有效索引范围(总长度减20),每次截取连续20个元素转成列表存入
X列; Y列直接取XY列从第21个元素开始的所有值,和X列的每行一一对应;- 最后通过
dropna移除无法匹配到Y值的行,并重置索引保证数据连续。
内容的提问来源于stack exchange,提问作者Elvis
相关产品推荐
相关产品推荐

