【发布时间】:2018-11-22 12:10:53
【问题描述】:
我想用两个 pandas 数据框的值(我要比较的值在第 0 列)做一个 if 语句:
编辑:
首先我想检查df1的值大于df2的值的次数。
for row in df1:
if df1[0] > df2[0]:
Print('Ok')
else:
Print('not OK')
我得到的是:
ValueError:Series 的真值不明确。使用a.empty, 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])
【问题讨论】:
-
请注明
do something和do something else代表什么,例如您是否正在根据您的情况创建一个新列? -
在 if 语句的基础上,我想合并另外两个数据帧,例如。 G。如果 df1[0] > df2[0] 的值合并 df3 和 df4 ...
-
这很重要。我建议您将完整的minimal reproducible example 与小示例数据框放在一起。
-
相关说明:DataFrames是dict-like,它们的key是列标签。所以如果你运行,例如
for x in df: print(x),你看到的只是df的列名,没有数据。解决方案是循环使用for i, row in df.iterrows() -
会很高兴接受答案,甚至对给出的反应做出反应。人们已经努力帮助您。
标签: python pandas dataframe for-loop if-statement