我正在使用带有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]的系列?
答案 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