如何根据首行值修改Pandas DataFrame中的数据值
实现思路与代码方案
核心逻辑
先获取DataFrame首行的初始值,根据初始值确定交替的配对值,再生成与原DataFrame行数一致的交替序列替换原列即可。
具体步骤与代码
- 导入pandas并构造示例DataFrame
import pandas as pd # 示例:首行为buy的DataFrame df = pd.DataFrame({'dir': ['buy', 'buy', 'buy', 'buy']})
- 获取首行初始值,定义交替配对
initial_val = df['dir'].iloc[0] # 根据初始值确定交替的两个值 alternate_pair = ['buy', 'sell'] if initial_val == 'buy' else ['sell', 'buy']
- 生成交替序列并替换原列
用列表推导生成对应长度的交替序列,直接赋值给原列:
df['dir'] = [alternate_pair[i % 2] for i in range(len(df))]
如果偏好numpy的方式,也可以用np.tile实现:
import numpy as np # 生成重复的配对序列,截取到原DataFrame的长度 df['dir'] = np.tile(alternate_pair, len(df)//2 + 1)[:len(df)]
验证不同初始值的情况
如果首行是sell,代码会自动生成sell→buy→sell→buy的序列:
# 首行为sell的示例 df_sell = pd.DataFrame({'dir': ['sell', 'sell', 'sell', 'sell']}) initial_val_sell = df_sell['dir'].iloc[0] alternate_pair_sell = ['buy', 'sell'] if initial_val_sell == 'buy' else ['sell', 'buy'] df_sell['dir'] = [alternate_pair_sell[i % 2] for i in range(len(df_sell))]
执行后df_sell的结果为:
dir 0 sell 1 buy 2 sell 3 buy
内容的提问来源于stack exchange,提问作者Pren Ven
相关产品推荐
相关产品推荐

