簡體   English   中英

如何將 function 應用於 pandas dataframe 中的每一行?

[英]How can I apply a function to each row in a pandas dataframe?

我對編碼很陌生,所以這可能很簡單,但到目前為止我找到的答案都沒有以我能理解的方式提供信息。

我想獲取一列數據並應用 function (axe^bx),其中 a > 0 和 b < 0。在這種情況下,(x) 將是我數據每一行中的浮點值。

看看我到目前為止有什么,但我不確定 go 從這里到哪里......

def plot_data():

    # read the file
    data = pd.read_excel(FILENAME)

    # convert to pandas dataframe
    df = pd.DataFrame(data, columns=['FP Signal'])

    # add a blank column to store the normalized data
    headers = ['FP Signal', 'Normalized']
    df = df.reindex(columns=headers)
    df.plot(subplots=True, layout=(1, 2))
    df['Normalized'] = df.apply(normalize(['FP Signal']), axis=1)
    print(df['Normalized'])
    # show the plot
    plt.show()

# normalization formula (exponential) = a x e ^bx where a > 0, b < 0
def normalize(x):
    x = A * E ** (B * x)
    return x

我可以顯示此圖像,但不能顯示“標准化”數據...

原始數據和標准化數據的子圖圖像

謝謝你的幫助!

您的代碼幾乎是正確的。

# normalization formula (exponential) = a x e ^bx where a > 0, b < 0
def normalize(x):
    x = A * E ** (B * x)
    return x

def plot_data():

    # read the file
    data = pd.read_excel(FILENAME)

    # convert to pandas dataframe
    df = pd.DataFrame(data, columns=['FP Signal'])

    # add a blank column to store the normalized data
    headers = ['FP Signal', 'Normalized']
    df = df.reindex(columns=headers)
    df['Normalized'] = df['FP Signal'].apply(lambda x: normalize(x))
    print(df['Normalized'])
    df.plot(subplots=True, layout=(1, 2))
    # show the plot
    plt.show()

我將apply行更改為以下內容: df['FP Signal'].apply(lambda x: normalize(x)) 它只需要 df['FP Signal'] 上的值,因為您不需要整行。 lambda x表示分配給 x 的當前值,我們將其發送以進行標准化。

你也可以寫df['FP Signal'].apply(normalize)更直接更簡單。 使用 lambda 只是我個人的偏好,但很多人可能不同意。

一個小的補充是在更改 dataframe 之后放置df.plot(subplots=True, layout=(1, 2)) 如果您在更改 dataframe 之前 plot,您將看不到 plot 的任何更改。 df.plot實際上在做 plot, plt.show只是顯示它。 這就是為什么df.plot必須在您處理完數據之后。

您可以使用map將 function 應用於字段

pandas.Series.map


s = pd.Series(['cat', 'dog', 'rabbit'])
s.map(lambda x: x.upper())
0       CAT
1       DOG
2    RABBIT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM