我有一本字典,elas[key]制作如下:
{'Elasticity ACETYLCYSTEINE to ACETYLCYSTEINE AUSTRIA': '-0.028715155688298175',
'Elasticity ACETYLSALICYLIC ACID to ACETYLCYSTEINE AUSTRIA': '-0.02808962598080608',
'Elasticity ACICLOVIR to ACETYLCYSTEINE AUSTRIA': '0.14357198802565055**',
'Elasticity ACETYLCYSTEINE to ACETYLSALICYLIC ACID AUSTRIA': '0.020617153039633438',
'Elasticity ACETYLSALICYLIC ACID to ACETYLSALICYLIC ACID AUSTRIA': '-0.008093962793053928',
'Elasticity ACICLOVIR to ACETYLSALICYLIC ACID AUSTRIA': '-0.09969671142491694',
'Elasticity ACETYLCYSTEINE to ACICLOVIR AUSTRIA': '0.055992183391380713',
'Elasticity ACETYLSALICYLIC ACID to ACICLOVIR AUSTRIA': '0.007574018836887331',
'Elasticity ACICLOVIR to ACICLOVIR AUSTRIA': '-0.4614966705921674**',
'Elasticity ACETYLCYSTEINE to ACETYLCYSTEINE BELGIUM': '-0.0337746122737748',
'Elasticity ACETYLSALICYLIC ACID to ACETYLCYSTEINE BELGIUM': '0.020318835241479816',
...
繼續為一些國家。
我想做的是一個包含 n 行數的 Pandas 資料框,n 是字典(行)中唯一的鍵數,k 列是我擁有的國家數。每個單元格 (row,k) 都應該將 elas 字典的每個值作為值。請注意,indices_list 只不過是一個串列,其中包含 elas 鍵的名稱,但不包含國家/地區名稱。所以理想情況下是這樣的:
AUSTRIA BELGIUM
ACETYLCYSTEINE to ACETYLCYSTEINE -0.028715155688298175. -0.03377
ACETYLSALICYLIC ACID to ACETYLCYSTEINE. -0.02808962598080608 0.02031
ACICLOVIR to ACETYLCYSTEINE 0.14357198802565055**. ...
ACETYLCYSTEINE to ACETYLSALICYLIC ACID 0.020617153039633438
ACETYLSALICYLIC ACID to ACETYLSALICYLIC ACID. -0.008093962793053928
ACICLOVIR to ACETYLSALICYLIC ACID -0.09969671142491694
ACETYLCYSTEINE to ACICLOVIR 0.055992183391380713
ACETYLSALICYLIC ACID to ACICLOVIR 0.007574018836887331
ACICLOVIR to ACICLOVIR -0.4614966705921674**
其實我有以下代碼
elasticity_by_ctry = pd.DataFrame(columns=keys, index=indices_list)
for k in keys:
conto=0
for key, item in elas.items():
elasticity_by_ctry.at[indices_list[conto],k] = elas[key]
#elasticity_by_ctry.loc[indices_list[conto],k] = elas[key]
conto=conto 1
elasticity_by_ctry
但它非常幼稚,不起作用。你能幫我弄清楚這個嗎?
謝謝,
費德里科
uj5u.com熱心網友回復:
您應該首先使用for-loop 并將每個鍵拆分'Elasticity ACETYLCYSTEINE to ACETYLCYSTEINE AUSTRIA'為"AUSTRIA"and"ACETYLCYSTEINE to ACETYLCYSTEINE"并添加到新字典中["AUSTRIA"]["ACETYLCYSTEINE to ACETYLCYSTEINE"],等等,然后轉換為DataFrame
data = {'Elasticity ACETYLCYSTEINE to ACETYLCYSTEINE AUSTRIA': '-0.028715155688298175',
'Elasticity ACETYLSALICYLIC ACID to ACETYLCYSTEINE AUSTRIA': '-0.02808962598080608',
'Elasticity ACICLOVIR to ACETYLCYSTEINE AUSTRIA': '0.14357198802565055**',
'Elasticity ACETYLCYSTEINE to ACETYLSALICYLIC ACID AUSTRIA': '0.020617153039633438',
'Elasticity ACETYLSALICYLIC ACID to ACETYLSALICYLIC ACID AUSTRIA': '-0.008093962793053928',
'Elasticity ACICLOVIR to ACETYLSALICYLIC ACID AUSTRIA': '-0.09969671142491694',
'Elasticity ACETYLCYSTEINE to ACICLOVIR AUSTRIA': '0.055992183391380713',
'Elasticity ACETYLSALICYLIC ACID to ACICLOVIR AUSTRIA': '0.007574018836887331',
'Elasticity ACICLOVIR to ACICLOVIR AUSTRIA': '-0.4614966705921674**',
'Elasticity ACETYLCYSTEINE to ACETYLCYSTEINE BELGIUM': '-0.0337746122737748',
'Elasticity ACETYLSALICYLIC ACID to ACETYLCYSTEINE BELGIUM': '0.020318835241479816',
}
result = {}
for key, value in data.items():
rest, country = key.rsplit(' ', 1)
rest, new_key = rest.split(' ', 1)
print(country, '|', new_key)
if country not in result:
result[country] = {}
result[country][new_key] = value
#print(result)
import pandas as pd
df = pd.DataFrame(result)
print(df)
結果:
AUSTRIA | ACETYLCYSTEINE to ACETYLCYSTEINE
AUSTRIA | ACETYLSALICYLIC ACID to ACETYLCYSTEINE
AUSTRIA | ACICLOVIR to ACETYLCYSTEINE
AUSTRIA | ACETYLCYSTEINE to ACETYLSALICYLIC ACID
AUSTRIA | ACETYLSALICYLIC ACID to ACETYLSALICYLIC ACID
AUSTRIA | ACICLOVIR to ACETYLSALICYLIC ACID
AUSTRIA | ACETYLCYSTEINE to ACICLOVIR
AUSTRIA | ACETYLSALICYLIC ACID to ACICLOVIR
AUSTRIA | ACICLOVIR to ACICLOVIR
BELGIUM | ACETYLCYSTEINE to ACETYLCYSTEINE
BELGIUM | ACETYLSALICYLIC ACID to ACETYLCYSTEINE
AUSTRIA BELGIUM
ACETYLCYSTEINE to ACETYLCYSTEINE -0.028715155688298175 -0.0337746122737748
ACETYLSALICYLIC ACID to ACETYLCYSTEINE -0.02808962598080608 0.020318835241479816
ACICLOVIR to ACETYLCYSTEINE 0.14357198802565055** NaN
ACETYLCYSTEINE to ACETYLSALICYLIC ACID 0.020617153039633438 NaN
ACETYLSALICYLIC ACID to ACETYLSALICYLIC ACID -0.008093962793053928 NaN
ACICLOVIR to ACETYLSALICYLIC ACID -0.09969671142491694 NaN
ACETYLCYSTEINE to ACICLOVIR 0.055992183391380713 NaN
ACETYLSALICYLIC ACID to ACICLOVIR 0.007574018836887331 NaN
ACICLOVIR to ACICLOVIR -0.4614966705921674** NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386227.html
上一篇:熊貓沒有正確替換字串
下一篇:如何將資料附加到資料框中
