如何为可以将值划分为类的列创建python函数
我有一列“付款价值”。我想创建另一个列,并从payment_value列中分类为High、Mid和low 下面是示例输入如何为可以将值划分为类的列创建python函数,python,function,numpy,Python,Function,Numpy,我有一列“付款价值”。我想创建另一个列,并从payment_value列中分类为High、Mid和low 下面是示例输入 payment_value 0 146.87 1 204.27 2 333.52 3 336.17 4 401.92 下面是我创建的函数 def classes(datacolumn): sorted(datacolumn) Q1,Q2 = np.percentile(datacolumn, [25,75]) if Q1 <
payment_value
0 146.87
1 204.27
2 333.52
3 336.17
4 401.92
下面是我创建的函数
def classes(datacolumn):
sorted(datacolumn)
Q1,Q2 = np.percentile(datacolumn, [25,75])
if Q1 < datacolumn:
print('Low')
elif Q2 >= datacolumn and Q2 < datacolumn:
print('Med')
else:
print('High')
错误:
数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
使用熊猫。改为应用。以下是一个例子:
import numpy as np
import pandas as pd
def classes(val, Q1, Q2):
payment_value = 'None'
if val < Q1:
payment_value = 'Low'
elif Q1 < val <= Q2:
payment_value = 'Med'
else:
payment_value = 'High'
return payment_value
if __name__=='__main__':
df = pd.DataFrame(dict(payment_value=[146.87, 204.27, 333.52, 336.17, 401.92]))
Q1,Q2 = np.percentile(df.payment_value.values, [25,75])
df.loc[:, 'bins'] = df.loc[:, 'payment_value'].apply(classes, Q1=Q1, Q2=Q2)
print(df)
将numpy导入为np
作为pd进口熊猫
def等级(val、Q1、Q2):
付款金额=无
如果val elif Q1排序(datacolumn)
不做什么
如果datacolumn
是一个数据帧,则应改为使用:
datacolumn.sort_values(by='payment_value')
其次,Q1
是一种所谓的矢量化操作,它比较Q1
,并返回一个DataFrame对象,其中
布尔结果。它不会返回布尔值,这就是为什么会得到
“数据帧的真值不明确”错误。你需要
迭代您的数据,或者按照@Michael Sidorov的建议使用apply
最后,类函数只打印,不返回
任何东西如果你想分配一个结果,你需要让它返回一些东西
对于data3['bins']不清楚是哪一行导致了问题,也不清楚如何运行代码。请看一看。
datacolumn.sort_values(by='payment_value')