【问题标题】:Looping over pandas DataFrame循环遍历 pandas DataFrame
【发布时间】:2023-03-24 06:29:01
【问题描述】:

我有一个奇怪的问题,即每次迭代的结果都不会改变。代码如下:

import pandas as pd
import numpy as np

X = np.arange(10,100)
Y = X[::-1]
Z = np.array([X,Y]).T

df = pd.DataFrame(Z ,columns = ['col1','col2'])
dif = df['col1'] - df['col2']

for gap in range(100):
    Up = dif > gap
    Down = dif < -gap

    df.loc[Up,'predict'] = 'Up'
    df.loc[Down,'predict'] = 'Down'

    df_result = df.dropna()
    Total = df.shape[0]
    count = df_result.shape[0]
    ratio = count/Total
    print(f'Total: {Total}; count: {count}; ratio: {ratio}')

结果总是

Total: 90; count: 90; ratio: 1.0

什么时候不应该。提前谢谢你

【问题讨论】:

    标签: python-3.x pandas loops numpy na


    【解决方案1】:

    在发布此问题 5 分钟后找到问题的根源。我只需要将 dataFrame 重置为原始数据即可解决问题。

    import pandas as pd
    import numpy as np
    
    X = np.arange(10,100)
    Y = X[::-1]
    Z = np.array([X,Y]).T
    
    df = pd.DataFrame(Z ,columns = ['col1','col2'])
    df2 = df.copy()#added this line to preserve the original df
    dif = df['col1'] - df['col2']
    
    for gap in range(100):
        df = df2.copy()#reset the altered df back to the original
        Up = dif > gap
        Down = dif < -gap
    
        df.loc[Up,'predict'] = 'Up'
        df.loc[Down,'predict'] = 'Down'
    
        df_result = df.dropna()
        Total = df.shape[0]
        count = df_result.shape[0]
        ratio = count/Total
        print(f'Total: {Total}; count: {count}; ratio: {ratio}')
    

    【讨论】:

      猜你喜欢
      • 2021-04-04
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2021-09-12
      • 1970-01-01
      相关资源
      最近更新 更多