我有以下df:
before actual
AC 12.120 340.65
BA 7.382 158.45
AA 42.140 200.55
AD 18.340 650.00
AT 76.100 1.00
我想遍历此df中的行,并检查df["actual"]
中的任何值是否小于df["before"]
中的值,生成一个字典,其中包含索引和值的字典df["before"]
值和df["actual"]
值。
这就是我的尝试:
dictionary_gobal={}
for index, row in df:
if df["before"]<df[actual]:
rdo_nocumple={index:[row["before"],row["actual"]}
print(rdo_nocumple)
然而它输出错误:
ValueError: too many values to unpack (expected 2)
期望的输出:
{"AT":["76.100","1.00"]}
答案 0 :(得分:1)
我认为您需要先按boolean indexing
进行过滤,然后进行转置并转换为to_dict
:
d = df[df["before"] > df['actual']].T.to_dict('list')
print (d)
{'AT': [76.1, 1.0]}
如果还希望将值转换为string
s:
d = df[df["before"] > df['actual']].astype(str).T.to_dict('list')
print (d)
{'AT': ['76.1', '1.0']}
详情:
print (df[df["before"] > df['actual']])
before actual
AT 76.1 1.0