追加DataFrame的结果将lamda应用于DateFrame或新系列

时间:2018-04-26 13:21:52

标签: python pandas lambda apply series

我正在使用带有lamda的apply方法来计算Dataframe的每一行以返回一个Series。

statsSeries = matchData.apply(lambda row: mytest(row), axis=1)

其中mytest(row)是一个返回timestamp,float,float。

的函数
def mytest(row):
    timestamp = row['timestamp'] 
    wicketsPerOver = row['wickets']/row['overs']
    runsPerWicket = row['runs']/row['wickets'] 
    return timestamp, wicketsPerOver, runsPerWicket 

正如我所写,statsSeries包含两列,一列是索引,另一列是(timestamp,wicketsPerOver,runsPerWicket)的元组。

如何返回包含三列[timestamp,wicketsPerOver,runsPerWicket]的系列?

1 个答案:

答案 0 :(得分:0)

您似乎需要使用pd.Series.apply(pd.Series)

这是一个最小的例子:

import pandas as pd

df = pd.DataFrame({0: [1, 2, 3, 4]})

def add_some(row):
    return row[0]+1, row[0]+2, row[0]+3

df[[1, 2, 3]] = df.apply(add_some, axis=1).apply(pd.Series)

print(df)

   0  1  2  3
0  1  2  3  4
1  2  3  4  5
2  3  4  5  6
3  4  5  6  7