我有一个数据集,其中有三列,Light_2、Light_3和Light_4。我希望对每一行都对这三列中的相应值执行检查:对于每一行,如果Light_4中的值大于Light_2中的值但小于Light_3中的值,则它是正确的,我可以转到下一行。但是,如果顺序不是这样,我必须通过在列之间替换值来进行值之间的置换,以便row["Light_2]<row["Light_4"]<row["Light_3"]
。进行置换后,我必须检查顺序是否正确,否则我必须进行新的排列直到遵守顺序。
此代码可以工作:
for i, r in dataOK.iterrows():
while not (r["Light_2"] < r["Light_4"] < r["Light_3"]):
if r["Light_2"] > r["Light_4"]:
r["Light_2"], r["Light_4"] = r["Light_4"], r["Light_2"]
if r["Light_4"] > r["Light_3"]:
r["Light_4"], r["Light_3"] = r["Light_3"], r["Light_4"]
if r["Light_2"] > r["Light_3"]:
r["Light_2"], r["Light_3"] = r["Light_3"], r["Light_2"]
但是for循环和while循环沿着生成了一个循环,这个循环实在是太慢了,而且可能对数据分析有害。2有没有办法重写这个循环,使它以更快、更优化的方式执行相同的过程?
1条答案
按热度按时间kkbh8khc1#
您可以尝试:
输出
注意,这是有效的,因为你有三列,中位数总是在最小值和最大值之间的列。