【发布时间】:2018-08-29 08:36:21
【问题描述】:
我在服务器中有两个 json 文件。第一个 json 文件是一个 json 格式的数据框,它有 21 列。
第二个 json 对象是要应用于第一个 json(数据文件)的不同过滤器的集合,我想在应用每个过滤器后动态计算数量列的减少。
两个 json 都在服务器中。示例如下,
[{
"criteria_no.": 1,
"expression": "!=",
"attributes": "Industry_name",
"value": "Clasentrix"
},{
"criteria_no.": 2,
"expression": "=",
"attributes": "currency",
"value": ["EUR","GBP","INR"]
},{
"criteria_no.": 3,
"expression": ">",
"attributes": "Industry_Rating",
"value": "A3"
},{
"criteria_no.": 4,
"expression": "<",
"attributes": "Due_date",
"value": "01/01/2025"
}
]
用python编码时,如下所示,
import urllib2, json
url = urllib2.urlopen('http://.../server/criteria_sample.json')
obj = json.load(url)
print obj
[{u'attributes': u'Industry_name', u'expression': u'!=', u'value': u'Clasentrix', u'criteria_no.': 1}, {u'attributes': u'currency', u'expression': u'=', u'value': [u'EUR', u'GBP', u'INR'], u'criteria_no.': 2}, {u'attributes': u'Industry_Rating', u'expression': u'>', u'value': u'A3', u'criteria_no.': 3}, {u'attributes': u'Due_date', u'expression': u'<', u'value': u'01/01/2025', u'criteria_no.': 4}]
现在,在示例 json 中,我们可以看到 "attributes",它们只是第一个数据文件中存在的列。我提到它有 21 列,"Industry_name","currency","Industry_Rating","Due_date" 是其中的四列。 "Loan_amount" 是数据文件中的另一列以及所有列。
现在,由于此标准列表只是一个示例,我们有 n 个此类标准或过滤器。我希望将此过滤器动态应用于数据文件并且我想计算贷款金额的减少。让我们考虑第一个过滤器,它说"Industry_name" 列不应该有"Clasentrix"。所以我想从数据文件中过滤"Industry_name",它不会有'Clasentrix' 条目。现在让我们假设在数据文件的 61 个观察结果中,我们有 11 个观察结果'Clasentrix'。然后我们将获取全部贷款金额的总和(61 行),然后从总贷款金额中减去包含'Clasentrix' 的 11 行的贷款金额总和。在应用第一个过滤器后,此数字将被视为减少。
现在对于每个 n 标准,我想在 python 中动态计算减少量。因此,在循环内,过滤器 json 文件将创建考虑属性、表达式和值的过滤器。就像第一个过滤器一样,它是"Industry_name != 'Clasentrix'"。这应该反映在 json 对象的每组行中,例如第二个标准(过滤器)应该是 "currency=['EUR','GBP','INR']" 等等。我也想相应地计算减少量。
我正在努力为上述练习创建 python 代码。我的帖子太长了,请见谅。但是请提供帮助,我如何动态计算每个 n 标准的减少量。
提前致谢!!
更新第一个数据文件,找到一些样本行;
[{
"industry_id.": 1234,
"loan_id": 1113456,
"Industry_name": "Clasentrix",
"currency": "EUR",
"Industry_Rating": "Ba3",
"Due_date": "20/02/2020",
"loan_amount": 563332790,
"currency_rate": 0.67,
"country": "USA"
},{
"industry_id.": 6543,
"loan_id": 1125678,
"Industry_name": "Wolver",
"currency": "GBP",
"Industry_Rating": "Aa3",
"Due_date": "23/05/2020",
"loan_amount": 33459087,
"currency_rate": 0.8,
"country": "UK"
},{
"industry_id.": 1469,
"loan_id": "8876548",
"Industry_name": "GroupOn",
"currency": "EUR",
"Industry_Rating": "Aa1",
"Due_date": "16/09/2021",
"loan_amount": 66543278,
"currency_rate": 0.67,
"country": "UK"
},{
"industry_id.": 1657,
"loan_id": "6654321",
"Industry_name": "Clasentrix",
"currency": "EUR",
"Industry_Rating": "Ba3",
"Due_date": "15/07/2020",
"loan_amount": 5439908765,
"currency_rate": 0.53,
"country": "USA"
}
]
【问题讨论】:
-
你能不能也展示一个数据流的样本?
-
你试过什么?你能把所有的json数据加载到内存中,还是数据文件很大?
pandas可能有用。 -
@DanielRoseman,我也用数据文件的样本更新了我的问题
-
@Stuart,json 文件已加载到服务器中。我能够加载它们