对象类型 DataFrame 没有名为 Stats 的轴
No axis named Stats for object type DataFrame
我正在尝试为 DataFrame 中的多行重用定义的函数。但我收到一个错误:
No axis named Stats for object type DataFrame
d = {'Person': ['A', 'B', 'C', 'D', 'E', 'F'],'Stats':[17, 117, -52, 100, -6, 101]}
ages = pd.DataFrame(data=d)
def my_jr(amount):
if amount > 0:
print('amount greater than zero')
elif amount < 0:
print('amount lesser than zero')
else:
pass
ages.apply(my_jr,'Stats')
这里的问题是您传递给 Panda 的 apply
方法的参数与预期不符。
第二个参数(它实际上是一个关键字参数)是 axis
-- 0 或 1。来自 documentation:
Objects passed to the function are Series objects whose index is
either the DataFrame's index (axis=0) or the DataFrame's columns
(axis=1).
因此,在这种情况下,您应该传递 1 作为轴。函数 my_jr
的每个参数都是一个 Pandas Series
对象,然后您可以在 Stats
处对其进行索引以获取要比较的数值。
这是更正后的版本:
import pandas as pd
d = {
'Person': ['A', 'B', 'C', 'D', 'E', 'F'],
'Stats': [17, 117, -52, 100, -6, 101]
}
ages = pd.DataFrame(data=d)
def my_jr(series):
amount = series['Stats']
if amount > 0:
print('amount greater than zero')
elif amount < 0:
print('amount lesser than zero')
else:
pass
ages.apply(my_jr, 1)
这给出了预期的输出:
amount greater than zero
amount greater than zero
amount lesser than zero
amount greater than zero
amount lesser than zero
amount greater than zero
对于 Panda 的 apply
的工作原理,这并不是一个令人惊讶的误解。我建议阅读更多 examples 的实际操作,以了解如何正确使用它。
我正在尝试为 DataFrame 中的多行重用定义的函数。但我收到一个错误:
No axis named Stats for object type DataFrame
d = {'Person': ['A', 'B', 'C', 'D', 'E', 'F'],'Stats':[17, 117, -52, 100, -6, 101]}
ages = pd.DataFrame(data=d)
def my_jr(amount):
if amount > 0:
print('amount greater than zero')
elif amount < 0:
print('amount lesser than zero')
else:
pass
ages.apply(my_jr,'Stats')
这里的问题是您传递给 Panda 的 apply
方法的参数与预期不符。
第二个参数(它实际上是一个关键字参数)是 axis
-- 0 或 1。来自 documentation:
Objects passed to the function are Series objects whose index is either the DataFrame's index (axis=0) or the DataFrame's columns (axis=1).
因此,在这种情况下,您应该传递 1 作为轴。函数 my_jr
的每个参数都是一个 Pandas Series
对象,然后您可以在 Stats
处对其进行索引以获取要比较的数值。
这是更正后的版本:
import pandas as pd
d = {
'Person': ['A', 'B', 'C', 'D', 'E', 'F'],
'Stats': [17, 117, -52, 100, -6, 101]
}
ages = pd.DataFrame(data=d)
def my_jr(series):
amount = series['Stats']
if amount > 0:
print('amount greater than zero')
elif amount < 0:
print('amount lesser than zero')
else:
pass
ages.apply(my_jr, 1)
这给出了预期的输出:
amount greater than zero
amount greater than zero
amount lesser than zero
amount greater than zero
amount lesser than zero
amount greater than zero
对于 Panda 的 apply
的工作原理,这并不是一个令人惊讶的误解。我建议阅读更多 examples 的实际操作,以了解如何正确使用它。