我有两个CSV文件,正在循环中使用。在其中一个文件中有一个名为";可用性得分";;有没有一种方法可以让循环按列的降序遍历记录?我想我可以先使用Ob.sort_values(by=['AvailabilityScore'],ascending=False)
来更改数据帧的顺序,这样当循环在中开始时就已经是正确的顺序了。我试过了,似乎没有什么区别。
# import the data
CF = pd.read_csv (r'CustomerFloat.csv')
Ob = pd.read_csv (r'Orderbook.csv')
# Convert to dataframes
CF = pd.DataFrame(CF)
Ob = pd.DataFrame(Ob)
#Remove SubAssemblies
Ob.drop(Ob[Ob['SubAssembly'] != 0].index, inplace = True)
#Sort the data by thier IDs
Ob.sort_values(by=['CustomerFloatID'])
CF.sort_values(by=['FloatID'])
#Sort the orderbook by its avalibility score
Ob.sort_values(by=['AvailabilityScore'],ascending=False)
# Loop for Urgent Values
for i, rowi in CF.iterrows():
count = 0
urgent_value = 1
for j, rowj in Ob.iterrows():
if(rowi['FloatID']==rowj['CustomerFloatID'] and count < rowi['Urgent Deficit']):
Ob.at[j,'CustomerFloatPriority'] = urgent_value
count+= rowj['Qty']
您需要添加inplace=True,如下所示:
Ob.sort_values(by=['AvailabilityScore'],ascending=False, inplace=True)
sort_values()
(像现在的大多数Pandas函数一样(不在位置。您应该将结果分配回保存DataFrame:的变量
Ob = Ob.sort_values(by=['CustomerFloatID'], ascending=False)
# ...
顺便说一句,虽然你可以把inplace=True
作为参数传递给sort_values()
,但我不建议这样做。一般来说,inplace=True
通常被认为是不好的做法。