我想用两个熊猫数据帧的值(如果要比较的值在第0列中)做一个if语句:
编辑:
首先,我想检查df1值大于df2值的次数。
for row in df1:
if df1[0] > df2[0]:
Print('Ok')
else:
Print('not OK')
我得到的是:
ValueError:系列的真值不明确。使用空 a.bool(),a.item(),a.any()或a.all()。
编辑2:
由于我没有时间尝试您的所有建议,并且由于我需要快速解决方案,所以我的理解如下:
excessLoadB1l=[]
indexYB1=loadC1C2B1.index.tolist()
tempLB1=energyBalanceB1['sumSupply_B1'].tolist()
for item in tempLB1:
if item < 0:
item=item
else:
item=0
excessLoadB1l.append(item)
excessLoadB1=pd.DataFrame({'excessLoadB1':excessLoadB1l}).set_index([indexYB1])
我从正值和负值中创建了一个列表
tempLB1 = energyBalanceB1 ['sumSupply_B1']。tolist()
我想将其分为两个不同的DataFrame。我从
借了索引indexYB1 = loadC1C2B1.index.tolist()
以及正值:
excessSupplyB1l=[]
indexZB1=loadC1C2B1.index.tolist()
tempSB1=energyBalanceB1['sumSupply_B1'].tolist()
for item in tempSB1:
if item > 0:
item=item
else:
item=0
excessSupplyB1l.append(item)
excessSupplyB1=pd.DataFrame({'excessSupplyB1':excessSupplyB1l}).set_index([indexZB1])
答案 0 :(得分:2)
快一点
for i, j in enumerate(df.itertuples()):
if j[0] > df1[0].iloc[i]:
print("OK")
else:
print("Not OK")
答案 1 :(得分:1)
不确定要查找的内容。
如果您要比较来自不同数据帧的单个列:
df1[0].gt(df2[0])
如果您将一个数据框的所有列与另一数据框的单个列进行比较:
df1.gt(df2[0], axis=0)
如果要比较两个数据框中的所有列:
df1.gt(df2)
将其添加到上述任何一项中以获取“确定”和“不正确”,而不是“真,假”:
.replace([1, 0], ['Ok', 'not OK'])
答案 2 :(得分:0)
count = 0
for i, row in df1.iterrows():
if row[0] > df2.loc[i,0]:
print('Ok')
count += 1
else:
print('not OK')
print ('%d times item in df1 was greater than df2' %count)
答案 3 :(得分:0)
您可以合并两个数据框,然后在np.where中添加一列:
df['result'] = np.where(df1['column1'] > df2['column2'], 'ok', 'not ok')
+
df[df.result == 'ok'].count()
另外,是从b2002借来的;
df_ = df1[0].gt(df2[0])
(df_ == 1).sum()