基于数据帧的列之间的条件生成字典

时间:2018-01-11 13:58:17

标签: pandas

我有以下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"]}

1 个答案:

答案 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