如何使用列值作为循环顺序来循环熊猫数据帧



我有两个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通常被认为是不好的做法。

最新更新