nNumbers = [1,2,3]
baseVariables = ['a','b','c','d','e']
arr = np.empty(0)
for i in nNumbers:
x = np.empty(0)
for v in baseVariables:
x = np.append(x, y['result'][i][v])
print(x)
arr = np.concatenate((arr, x))
我有一個 Json 輸入存盤在 y 中。需要從該 json 格式中過濾掉一些變數。上面的代碼的作業原理是它給了我一個陣列中的輸出,但它只是一個一維陣列。我想要二維陣列中的輸出,例如:
[['q','qr','qe','qw','etc']['','','','','']['','','','' ,'']]
我嘗試了各種不同的方法,但無法弄清楚。任何有關如何將其轉換為所需輸出格式的反饋都將不勝感激。
uj5u.com熱心網友回復:
制作嵌套字串串列的正確基本 Python 方法:
In [57]: nNumbers = [1,2,3]
...: baseVariables = ['a','b','c','d','e']
In [58]: alist = []
...: for i in nNumbers:
...: blist = []
...: for v in baseVariables:
...: blist.append(v str(i))
...: alist.append(blist)
...:
In [59]: alist
Out[59]:
[['a1', 'b1', 'c1', 'd1', 'e1'],
['a2', 'b2', 'c2', 'd2', 'e2'],
['a3', 'b3', 'c3', 'd3', 'e3']]
如有必要,可以將其轉換為陣列 - 盡管numpy沒有為字串提供太多附加實用程式:
In [60]: np.array(alist)
Out[60]:
array([['a1', 'b1', 'c1', 'd1', 'e1'],
['a2', 'b2', 'c2', 'd2', 'e2'],
['a3', 'b3', 'c3', 'd3', 'e3']], dtype='<U2')
或者以緊湊的串列理解形式:
In [61]: [[v str(i) for v in baseVariables] for i in nNumbers]
Out[61]:
[['a1', 'b1', 'c1', 'd1', 'e1'],
['a2', 'b2', 'c2', 'd2', 'e2'],
['a3', 'b3', 'c3', 'd3', 'e3']]
您從串列開始!并制作弦樂!并從 JSON 中選擇專案,使用y['result'][i][v]. 使用 沒有任何好處numpy,尤其是重復使用np.appendand np.concatenate。
uj5u.com熱心網友回復:
你能提供一個 JSON 的例子嗎?聽起來你基本上想要
- 過濾 JSON
- 展平 JSON 根據您的輸出示例的含義,您可能不想過濾,而是用空值替換某些值,對嗎?
請注意,Pandas 具有非常強大的開箱即用選項來處理,特別是扁平化 JSON。https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#io-json-reader。一種方法可能是首先加載 Pandas 并從那里過濾它。扁平化 JSON 也可以通過迭代它來完成,如下所示:
def flatten_json(y):
out = {}
def flatten(x, name=''):
if type(x) is dict:
for a in x:
flatten(x[a], name a '_')
elif type(x) is list:
i = 0
for a in x:
flatten(a, name str(i) '_')
i = 1
else:
out[name[:-1]] = x
flatten(y)
return out
我從以下網址獲得此代碼:https ://towardsdatascience.com/flattening-json-objects-in-python-f5343c794b10 。作者解釋了扁平化 JSON 的一些挑戰。當然,您可以if根據過濾需要在函式中添加一些陳述句。我希望這至少能讓你開始!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497806.html
上一篇:使用Itertools列出列名
