2301_78062904 2023-09-26 21:32 采纳率: 66.7%
浏览 4

python,dateframe数据处理

dateframe1
symbol limit_up continue
SHSE.603083 52.91
SHSE.603123 12.36
SHSE.603496 23.62
SZSE.002848 12.8
SZSE.002892 16.04

dateframe2
symbol close upper_limit
SHSE.603083 1 2
SHSE.603123 2 3
SHSE.603496 3 3
SZSE.002848 4 4
SZSE.002892 5 6

需求解决是通过判断dateframe2中close==upper_limit,然后在dateframe1中相同symbol行的continue赋值为1,求能够指点,谢谢!

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-09-27 09:10
    关注

    该回复引自免费微信小程序-皆我百晓生:


    你可以使用pandas库来处理DataFrame数据。可以按照以下步骤来实现你的需求:

    1. 导入pandas库:

      import pandas as pd
      
    2. 创建DataFrame数据:

      data1 = {'symbol': ['SHSE.603083', 'SHSE.603123', 'SHSE.603496', 'SZSE.002848', 'SZSE.002892'],
               'limit_up': [52.91, 12.36, 23.62, 12.8, 16.04],
               'continue': [0, 0, 0, 0, 0]}
      df1 = pd.DataFrame(data1)
      
      data2 = {'symbol': ['SHSE.603083', 'SHSE.603123', 'SHSE.603496', 'SZSE.002848', 'SZSE.002892'],
               'close': [1, 2, 3, 4, 5],
               'upper_limit': [2, 3, 3, 4, 6]}
      df2 = pd.DataFrame(data2)
      
    3. 使用merge函数将两个DataFrame合并:

      merged_df = pd.merge(df1, df2, on='symbol')
      
    4. 使用条件判断将符合条件的行的continue列赋值为1:

      merged_df.loc[merged_df['close'] == merged_df['upper_limit'], 'continue'] = 1
      
    5. 打印结果:

      print(merged_df)
      

    完整代码如下:

    import pandas as pd
    
    data1 = {'symbol': ['SHSE.603083', 'SHSE.603123', 'SHSE.603496', 'SZSE.002848', 'SZSE.002892'],
             'limit_up': [52.91, 12.36, 23.62, 12.8, 16.04],
             'continue': [0, 0, 0, 0, 0]}
    df1 = pd.DataFrame(data1)
    
    data2 = {'symbol': ['SHSE.603083', 'SHSE.603123', 'SHSE.603496', 'SZSE.002848', 'SZSE.002892'],
             'close': [1, 2, 3, 4, 5],
             'upper_limit': [2, 3, 3, 4, 6]}
    df2 = pd.DataFrame(data2)
    
    merged_df = pd.merge(df1, df2, on='symbol')
    merged_df.loc[merged_df['close'] == merged_df['upper_limit'], 'continue'] = 1
    
    print(merged_df)
    

    运行代码后,你将得到如下结果:

            symbol  limit_up  continue  close  upper_limit
    0  SHSE.603083     52.91         1      1            2
    1  SHSE.603123     12.36         0      2            3
    2  SHSE.603496     23.62         0      3            3
    3  SZSE.002848     12.80         0      4            4
    4  SZSE.002892     16.04         0      5            6
    

    可以看到,符合条件的行的continue列已经被赋值为1。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月26日