在熊猫数据框单元格中插入列表

Posted

技术标签:

【中文标题】在熊猫数据框单元格中插入列表【英文标题】:Insert list in pandas dataframe cell 【发布时间】:2018-05-16 05:59:01 【问题描述】:

我有一本字典,其中每个键都有一个值列表。 与每个键关联的列表的长度是不同的。 我想将字典转换为具有两列“键”和“值”的熊猫数据框。每一行在“Key”列中都有一个字典键,在“Values”列中有与其关联的值列表。数据框如下所示:

mapping_dict = 'A':['a', 'b', 'c', 'd'], 'B':['aa', 'bb', 'cc']

df = 
    Key   Value
0   A     ['a', 'b', 'c', 'd']
1   B     ['aa', 'bb', 'cc']

我尝试使用here 提供的答案,根据我的用例对其进行修改。 但它没有输出所需的答案。

【问题讨论】:

【参考方案1】:

您只需使用 pandas 中的“at”设置器即可:

df.at[0,'A'] = ['a', 'b', 'c', 'd']

如果 column dtype 是“object”,它会起作用。

【讨论】:

【参考方案2】:

我必须在特定位置插入一个列表,以下解决方案对我有用。

由于某种原因,pandas 在应用函数中返回列表/数组时不会抱怨:

df.loc[0,'A'] = df.loc[0,A].apply(lambda x: ['a', 'b', 'c', 'd'])

【讨论】:

【参考方案3】:

如果您传递一个列表,pandas 会将其视为多行。但是,您可以通过将列表作为外部列表的单个元素来欺骗它,如下所示:

import pandas as pd
mapping_dict = 'A':[['a', 'b', 'c', 'd']], 'B':[['aa', 'bb', 'cc']]
df = pd.DataFrame(mapping_dict)
df

        A                 B
0   [a, b, c, d]    [aa, bb, cc]

【讨论】:

【参考方案4】:

我认为您可能需要事先更新您的字典,然后才能使用from_dict。更新以使您的字典成为列表列表。

import pandas as pd
mapping_dict = 'A':['a', 'b', 'c', 'd'], 'B':['aa', 'bb', 'cc']
updated_dict = k: [v] for k, v in mapping_dict.items()
df = pd.DataFrame.from_dict(updated_dict,orient='index')

如果你想要你的确切格式

df_formatted = df.reset_index()
df_formatted.columns = ['Key', 'Value']
print(df_formatted)

  Key         Value
0   B  [aa, bb, cc]
1   A  [a, b, c, d]

更新

Bharath 的回答比较短,但是如果你还想用 from_dict 那么你可以借鉴他的方法来做

df2 = pd.DataFrame.from_dict(list(mapping_dict.items()))
df2.columns = ['Key', 'Value']

【讨论】:

【参考方案5】:

在构造函数中使用pd.Series,因为dict值大小不相等,然后set_axis添加列名,即

mapping_dict = 'A':['a', 'b', 'c', 'd'], 'B':['aa', 'bb', 'cc']

df = pd.DataFrame(pd.Series(mapping_dict).reset_index()).set_axis(['Key','Value'],1,inplace=False)

  Key         Value
0   A  [a, b, c, d]
1   B  [aa, bb, cc]

选项 2,将 dict 项转换为列表,然后将其传递给构造函数:

df = pd.DataFrame(list(mapping_dict.items()),columns=['Key','Value'])

【讨论】:

以上是关于在熊猫数据框单元格中插入列表的主要内容,如果未能解决你的问题,请参考以下文章

将熊猫数据框单元格中的字典解析为新行单元格(新列)

过滤单元格中有数组的熊猫数据框

读取包含来自csv的单元格中的字典的熊猫数据框

从熊猫数据框单元格中的凌乱字符串中删除换行符?

如何在熊猫数据框单元格中提取部分字符串并在其中创建一个包含该字符串的新列

根据“如果单元格中的字符串”条件删除熊猫列中的行