Pandas DataFrame应用函数调试
Pandas DataFrame apply function debug
import numpy as np
import pandas as pd
df = pd.DataFrame({
'a': [4, 5, 3, 1, 2],
'b': [20, 10, 40, 50, 30],
'c': [25, 20, 5, 15, 10]
})
def second_largest1(df1):
return df1[df1.argmax()-1]
print second_largest1(df['a'])
print second_largest1(df['b'])
print second_largest1(df['c'])
我的 'second_largest1' 函数工作分别显示 df['a'] 和 df['b']、4 和 40 的结果。
然而,它不适用于 df['c']。为什么不起作用?
错误信息是:
KeyError: -1L
def second_largest1(df1):
return df1.nlargest(2).iloc[1]
print (second_largest1(df['a']))
4
print (second_largest1(df['b']))
40
print (second_largest1(df['c']))
20
或sort_values
with iloc
:
def second_largest1(df1):
return df1.sort_values(ascending=False).iloc[1]
import numpy as np
import pandas as pd
df = pd.DataFrame({
'a': [4, 5, 3, 1, 2],
'b': [20, 10, 40, 50, 30],
'c': [25, 20, 5, 15, 10]
})
def second_largest1(df1):
return df1[df1.argmax()-1]
print second_largest1(df['a'])
print second_largest1(df['b'])
print second_largest1(df['c'])
我的 'second_largest1' 函数工作分别显示 df['a'] 和 df['b']、4 和 40 的结果。
然而,它不适用于 df['c']。为什么不起作用?
错误信息是:
KeyError: -1L
def second_largest1(df1):
return df1.nlargest(2).iloc[1]
print (second_largest1(df['a']))
4
print (second_largest1(df['b']))
40
print (second_largest1(df['c']))
20
或sort_values
with iloc
:
def second_largest1(df1):
return df1.sort_values(ascending=False).iloc[1]