如何利用预设股票变动逻辑修改Pandas DataFrame中的股票值?
解决Pandas DataFrame中股票值更新问题
核心思路
不用复杂的if判断逐个匹配,先拆解你的Stocks_change指令字符串,提取关键信息后直接定位DataFrame中的对应行更新即可。
具体步骤
拆解变动指令:把
Stocks_change按空格拆分,得到股票名称、涨跌方向、变动幅度三个部分,注意把幅度转成数值类型# 示例指令:"AAPL + 5.2" stock_name, direction, change_str = Stocks_change.split() change_val = float(change_str)计算新价格:
- 如果变动幅度是百分比(比如
+5代表涨5%):current_price = df.loc[df['股票名称'] == stock_name, '价格'].iloc[0] if direction == '+': new_price = current_price * (1 + change_val / 100) else: new_price = current_price * (1 - change_val / 100) - 如果变动幅度是绝对值(比如
+5代表涨5元):current_price = df.loc[df['股票名称'] == stock_name, '价格'].iloc[0] new_price = current_price + change_val if direction == '+' else current_price - change_val
- 如果变动幅度是百分比(比如
更新DataFrame:用
loc精准定位行和列,避免链式赋值导致的更新失效问题df.loc[df['股票名称'] == stock_name, '价格'] = new_price
完整示例代码
import pandas as pd # 初始化股票DataFrame df = pd.DataFrame({ '股票名称': ['AAPL', 'GOOG', 'MSFT'], '价格': [150.0, 2800.0, 300.0] }) # 模拟变动指令 Stocks_change = "AAPL + 3.5" # 执行更新流程 stock_name, direction, change_str = Stocks_change.split() change_val = float(change_str) current_price = df.loc[df['股票名称'] == stock_name, '价格'].iloc[0] new_price = current_price * (1 + change_val / 100) if direction == '+' else current_price * (1 - change_val / 100) df.loc[df['股票名称'] == stock_name, '价格'] = new_price print(df)
内容的提问来源于stack exchange,提问作者Yaseen Malam
相关产品推荐
相关产品推荐

