比较两列并在新列中添加值

2024-03-29 12:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

关于如何解决这个问题,这里有很多建议,但我可以´我找不到任何可以工作的东西

如何在数据框中运行,比较同一行中两个不同列的两个单元格中的值,并在新列中添加值。我知道我写的代码不能被使用,因为“for循环”只计算列而不是行

def open_ticker_index():
    with open('pickle/' + tickerlist, "rb") as f:
        tickers = pickle.load(f)

    for ticker in tickers:
        df = pd.read_csv('calcuatet_daily_stock_dfs/' + ticker + '.csv')
        df = df.tail(250)

        for row in df:
            if df['Adj Close'] > df['MA3']:
                df['Adj Close > MA3'] = 1
            else:
                df['Adj Close > MA3'] = 0

我也尝试过这个,但是我不能创建一个新的列

def open_ticker_index():
    with open('pickle/' + tickerlist, "rb") as f:
        tickers = pickle.load(f)

    for ticker in tickers:
        df = pd.read_csv('calcuatet_daily_stock_dfs/' + ticker + '.csv')
        df = df.tail(250)
        df['Adj Close > MA3']

        for col, row in df.iterrows():
            if (col, row["Adj Close"][1]) > (col, row["MA3"][1]):
                df['Adj Close > MA3'] = 1
            else:
                df['Adj Close > MA3'] = 0

我也试过了,但是我不能创建一个新的列


Tags: csvindfforcloseindexdefcol
1条回答
网友
1楼 · 发布于 2024-03-29 12:24:30

您不需要进行循环,使用numpy更容易进行如下比较:

import numpy as np
import pandas as pd
from io import StringIO

data = """
Col1,Adj,MA3
A,1,2
B,8,5
C,7,7
"""
# Here just to create a csv
df = pd.read_csv(StringIO(data),sep=',')


# With 2 Logical operators > <
df['Adj Close > MA3'] =np.where(df['Adj']>=df['MA3'],'1', '0')
print(df)
# With 3 Logical operators > <  =
df['Adj Close > MA3'] =np.where(df['Adj']>df['MA3'],'1', np.where(df['Adj']<df['MA3'],'0', 'equals'))
print(df)

相关问题 更多 >