首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输入熊猫的细胞价值

输入熊猫的细胞价值
EN

Stack Overflow用户
提问于 2021-12-18 12:38:58
回答 1查看 25关注 0票数 0

我有一本字典,即elas[key],如下所示:

代码语言:javascript
复制
{'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行数n,字典中键的唯一数目(行),k列是我拥有的国家数k。每个单元格(行、k)应该有elas字典的每个值作为值。请注意,indices_list只是一个没有国家名称的elas键名称的列表。所以理想的情况是:

代码语言:javascript
复制
                                               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**

实际上,我有以下代码

代码语言:javascript
复制
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

但这是非常天真和不起作用的。你能帮我弄清楚这个吗?

谢谢,

费德里科

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-18 14:49:55

您应该首先使用for-loop,将每个键'Elasticity ACETYLCYSTEINE to ACETYLCYSTEINE AUSTRIA'拆分为"AUSTRIA""ACETYLCYSTEINE to ACETYLCYSTEINE",然后添加到新字典中,如["AUSTRIA"]["ACETYLCYSTEINE to ACETYLCYSTEINE"]等,然后再转换为DataFrame

代码语言:javascript
复制
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)

结果:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70403495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档