当前位置: 首页 > 知识库问答 >
问题:

将pandas中的词典拆分为单独的列[重复]

丁经国
2023-03-14

II有一个serie对象包含3列(名称,代码,值),我从下面的函数得到:

def get_fuzz(df, w):
    s = df['Legal_Name'].apply(lambda y: fuzz.token_set_ratio(y, w))
    idx = s.idxmax()
    return {'name': df['Legal_Name'].iloc[idx], 'lei': df['LEI'].iloc[idx], 'val': s.max()}

df1['Name'].apply(lambda x: get_fuzz(df, x))

意甲看起来像这样

output
0    {'name': 'MGR Farms LLC', 'lei': '984500486BBD...
1    {'name': 'RAVENOL NORGE AS', 'lei': '549300D2O...
2    {'name': 'VCC Live Group Zártkörűen Működő Rés...

我可以用下面的代码将输出分配给我的数据帧。

df1.assign(search=df1['Name'].apply(lambda x: get_fuzz(df, x)))

我得到的数据框是这样的

    ID  Name             search
0   1   Marshalll   {'name': 'MGR Farms LLC', 'lei': '984500486BBD...
1   2   JP Morgan   {'name': 'RAVENOL NORGE AS', 'lei': '549300D2O...

如何将此列拆分为3列?

    ID  Name        Name_bis            LEI             Value
0   1   Marshalll   MGR Farms LLC    984500486BBD        57
1   2   Zion        ZION INVESTMENT  549300D2O           100

共有1个答案

文心思
2023-03-14

假设您将数据帧设置为:-

>>> df
   ID       Name                                             search
0   1  Marshalll  {'name': 'MGR Farms LLC', 'lei': '984500486BBD...
1   2  JP Morgan  {'name': 'RAVENOL NORGE AS', 'lei': '549300D2O...

您可以使用:-

>>> df = pd.concat([df.drop(['search'], axis=1), df['search'].apply(pd.Series)], axis=1)
>>> df
   ID       Name              name           lei  value
0   1  Marshalll     MGR Farms LLC  984500486BBD     57
1   2  JP Morgan  RAVENOL NORGE AS     549300D2O    100

然后根据需要更新列名:-

>>> df.columns = ['ID', 'Name', 'Name_bis', 'LEI', 'Value']
>>> df
    ID       Name          Name_bis           LEI  Value
0   1  Marshalll     MGR Farms LLC  984500486BBD     57
1   2  JP Morgan  RAVENOL NORGE AS     549300D2O    100
 类似资料:
  • 问题内容: 我将数据保存在postgreSQL数据库中。我正在使用Python2.7查询此数据并将其转换为Pandas DataFrame。但是,此数据框的最后一列中包含值的字典(或列表?)。DataFrame看起来像这样: 我需要将此列拆分为单独的列,以便DataFrame如下所示: 我遇到的主要问题是列表的长度不同。但是所有列表最多只能包含相同的3个值:a,b和c。而且它们始终以相同的顺序出现

  • 我的主要问题是列表的长度不一样。但是所有列表只包含最多相同的3个值:'a'、'b'和'c'。它们总是以相同的顺序出现('a'第一,'b'第二,'c'第三)。 下面的代码用来工作并返回我想要的东西(df2)。 我上周刚刚运行了这个代码,它运行得很好。但是现在我的代码坏了,我从第[4]行得到了这个错误: 数据以这种格式从数据库导入。对这个问题有什么帮助或想法吗?有办法转换Unicode吗?

  • 我有以下,其值是字典: 我希望获得所需的输出: 我怎样才能把字典分成单独的列呢? 我见过使用函数拆分字符串的列,但不确定如何将其应用于字典作为值的情况。

  • 如何将这列列表拆分为两列? 期望的结果:

  • 我有一个包含字典作为元素的单列的。这是以下代码的结果: 我需要将此列拆分为尽可能多的列(我有太多的行和列,并且我无法更改函数),因此输出将是一个包含列,,的数据帧,<代码>功能50。这样做的最佳方式是什么? 一个具体而简单的例子: 但当我尝试用pd.Series或pd.DataFrame包装它时,它说如果数据是标量值,则必须提供索引。提供索引=['feature1','feature2'],我会得

  • 我找到了一个解决方案,但速度非常慢: 不使用外部模块(Numpy等),你有什么想法吗?