我的資料框示例如下:
Period | ticker | rank | compositesore | C20 | C11 | C25 |
----------------------------------------------------------
2010-1 | AAPL | 2 | 100 | 121 | 44 |56 |
-----------------------------------------------------------
我想要的json輸出如下:
[
{
"period": "2010-1",
"ticker": "AAPL",
"rank": 2,
"compositescore": 100,
"factorValues": {
"C20": 121,
"C11": 44,
"C25": 56
}
]
我想要收集“factorValues”下的所有 C20、C11 和 C25 列。
uj5u.com熱心網友回復:
不是很漂亮,但它有效。例如,您當然需要匯入 json 和 io,以及 Pandas。
data = '''Period|ticker|rank|compositesore|C20|C11|C25
2010-1|AAPL|2|100|121|6|156
2010-3|NFLX|3|100|4121|464|596
2010-4|QQQQ|4|100|1281|441|856
'''
df = pd.read_csv(io.StringIO(data), sep='|', engine='python')
cola = ['Period', 'ticker', 'rank', 'compositesore']
colb = ['C20', 'C11', 'C25']
def create_json(x):
# print(x[cola].to_json())
dd = json.loads(x[cola].to_json())
ee = json.loads(x[colb].to_json())
dd['factorValues'] = ee
# print(dd)
return dd
df['jsons'] = df.apply(lambda x: create_json(x), axis=1)
df.jsons[0]
輸出
{'Period': '2010-1',
'ticker': 'AAPL',
'rank': 2,
'compositesore': 100,
'factorValues': {'C20': 121, 'C11': 6, 'C25': 156}}
最后
df.jsons.tolist()
[{'Period': '2010-1',
'ticker': 'AAPL',
'rank': 2,
'compositesore': 100,
'factorValues': {'C20': 121, 'C11': 6, 'C25': 156}},
{'Period': '2010-3',
'ticker': 'NFLX',
'rank': 3,
'compositesore': 100,
'factorValues': {'C20': 4121, 'C11': 464, 'C25': 596}},
{'Period': '2010-4',
'ticker': 'QQQQ',
'rank': 4,
'compositesore': 100,
'factorValues': {'C20': 1281, 'C11': 441, 'C25': 856}}]
旁注:如果你這樣做
return json.dumps(dd)
你會得到雙引號而不是單引號
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315263.html
上一篇:在Elasticsearch中,我可以將嵌入檔案中的日期字串作為日期型別進行索引嗎?
下一篇:過濾熊貓資料框/邏輯運算子
