簡體   English   中英

熊貓數據框將功能應用於整個列

[英]Pandas dataframe apply function to entire column

我有一些作用於列表並返回列表的函數。 我想在Pandas數據框上創建一列,以使新列是由作用於數據框其他列的函數之一返回的列表。

在類似python的偽代碼中:

def function(parameter, list):
    ...
    return output_list

df['New Column'] = function(parameter, df['Old Column'])

我嘗試了不同的選項,包括類似上面的代碼,使用.apply()方法和其他方法……均未成功。

有沒有辦法做到這一點? 謝謝!

編輯:有關解決方案,請參閱Brian Pendleton的答案。 數據框中的列是熊貓的Series對象。 只需從所需列表中創建一個系列即可。

df['New_Column'] = pd.Series(data=function(parameter,list))

如果要向函數發送df["old column"]pandas.Series發送pandas.Series對象。 為什么不只是對該系列進行操作並返回相同形狀的新系列。 然后,您可以按需使用對新列的分配。

我認為您要:

  • 應用返回列表的函數
  • 將結果存儲在DataFrame
  • 將列表分成不同的列

這是一個例子。

def my_funct(parameter):
return (1,2,3) + parameter

df = pd.DataFrame(np.random.randint(low=1, high=10, size=3), columns=['my_funct'])
#df['New Column'] = function(parameter, df['Old Column'])
df['my_funct'] = df['my_funct'].apply(lambda x: my_funct(x))

# After the function call the resulting lists are stored in one column

       my_funct
0     [5, 6, 7]
1  [10, 11, 12]
2     [6, 7, 8]

# Here is how to split the list into several columns

df = df['my_funct'].apply(pd.Series)

    0   1   2
0   5   6   7
1  10  11  12
2   6   7   8

暫無
暫無

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

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