[在此处输入图片描述]
图像2(结果) enter image description here
2我正在使用python + pandas在 csvs中进行数据操作。 示例#s
PL T
0.569999695
0.960002899
1.729999542
1.590000153
1.450000763
1.530002594 1.530002594
1.770000458
0.890003204
0.490001678
1.11000061
1.340000153
2.390003204 2.390003204
2.470001221
2.760002136
3.200000763
2.880001068
2.479999542 2.479999542
3.100002289
1.269996643
1.269996643
1.590000153
2.13999939
我过去曾经使用过if语句,但是这一语句非常具体,我似乎无法使语法正常工作。
如果您查看代码,则希望像这样计算列“ T
”
之前的代码已经在该行中填充了一些数字,其余的为空白。
假设工作代码将遍历t列中的行。
第一行大部分为空白,因此它将跳过那些行,直到命中包含数字的行。 if(df['T'].iat[x-1] != "")
一旦在行中打了一个数字,脚本将检查逻辑(如果它旁边的行中的单元格大于其上方的单元格)(如果
df['PL'].iat[x] > df['PL'].iat[x-1]
如果该逻辑为真,则将其旁边的单元格打印到该列中。 df['T'].iat[x] = df['PL'].iat[x]
如果逻辑为假,则该单元格保持空白
我认为真正的问题是在此步骤之后如何迭代。现在,我认为它可以返回并再次检查最后一个if语句,但是我希望它为每一行遍历所有这些语句。
它应该阅读上面的列以查看它是否为空白或已填充,然后再次通过if语句,仅在满足所有条件时才打印一个数字。
我尝试了多种安排以及使用和/或声明。我似乎无法获得正确的结果。
import pandas as pd
import csv
df=pd.read_csv(filename)
len1 = len(df)
for x in range(len3):
if (df['T'].iat[x-1] != ""):
if(df['T'].iat[x] == ""):
if (df['PL'].iat[x] > df['PL'].iat[x-1]):
df['T'].iat[x] = df['PL'].iat[x]
该代码不显示任何错误消息,但是打印的结果不正确。如果我可以更好地解释它,或者任何人有任何想法,请告诉我。谢谢!
答案 0 :(得分:0)
什么是df?
如果df是一个字典,如2个元素(T和PL)的对象,则len(df)
将返回2。
也许您是指len(df["T"])
或len(df["PL"])
?
答案 1 :(得分:0)
您的第一个setState(() {
steps[steps.keys.elementAt(/*checkbox index*/)] = true;
});
语句在找到一个空单元格之前不会跳过行-您的第二个if
语句会这样做。我认为您的第一条if
语句将导致您在检查第一行时失败。
尝试删除第一个if
。如果那行不通,也尝试删除其他if
,看看是否能够使用if
设置任何值-可能是熊猫有单独的方法来设置值而不是得到它们。
答案 2 :(得分:0)
df.loc[((df['T'] > df['T'].shift(-1)) & (df['T'] != df['PL'])), 'PL'] = df['T']
IIUC,这应该做您想要的。