簡體   English   中英

將函數應用於數據框中的多列范圍

[英]Apply a function to range of multiple columns in a Data frame

你能告訴我如何使用像x['D'] :x['A']這樣的列范圍,而不是將所有列作為參數在下面一一列出來運行嗎?

df.loc[:,'F']=df.apply(lambda x: my_function(x['D'],x['C'],x['B'],x['A']), axis=1)

你在尋找這樣的東西嗎?

df.loc[:,'F']=df.apply(lambda x: my_function(x.loc['D':'A']), axis=1)

如果您需要參數是列列表而不是數據框:

df.loc[:,'F']=df.apply(lambda x: my_function([x for x in x.loc['D':'A']]), axis=1)

你可以嘗試做這樣的事情:

df.loc[:,'F']=df.apply(lambda x: my_function(*df.columns.difference(['F'])), axis=1)

如果你的列是有序的,你可以像這樣切片:

df.loc[:,'F']=df.apply(lambda x: my_function(*df.iloc[:,1:4])), axis=1)

假設你有一個這樣的數據框

    E   D   C   B   A
______________________

0   8   9   9   6   1
1   8   4   1   4   3
2   0   4   6   9   3

並且您想將一些函數func應用於列DA ,您可以嘗試

def func(x):
    return sum(x[1:])

df.apply(func, axis=1)

輸出

0    25
1    12
2    22
dtype: int64

暫無
暫無

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

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