【问题标题】:Python Multiple DataFrames to dictionaryPython 多个 DataFrames 到字典
【发布时间】:2019-07-30 08:02:12
【问题描述】:

我有几个具有不同行数的 2 列数据框。本质上,第一列是分类字符串值,第二列是标签编码的数值。现在,当我从模型输出评估特征值时,我只看到数值,我想看到分类值。

最好的方法是创建一个列表/字典的字典,然后循环遍历值等于并替换的字典吗?

我对不同的方法持开放态度。

df1 = df1[['A1','A2']].drop_duplicates().sort_values(by=['A2'])
df2 = df2[['B1','B2']].drop_duplicates().sort_values(by=['B2'])
df3 = df3[['C1','C2']].drop_duplicates().sort_values(by=['C2'])

所以...

df1
A1    A2
cat   1

df2
B1    B2
dog   2

df3
C1    C2
fish  3
bird  4

dict= {df1: {cat:1}, df2: {dog:2}, df3: {fish:3}}

【问题讨论】:

  • 您是否愿意拥有一个以字符串为键、数字为值的单级字典?即{'cat': 1, 'dog': 2, 'fish': 3, 'bird': 4}?我不明白你为什么要嵌套字典(除了可能要跟踪 (key, value) 对来自哪个 DataFrame)。
  • 我的想法是嵌套字典会减少查询时间。不过,我也可以使用一本单级字典。

标签: python


【解决方案1】:

假设您省略了“鸟”是一个疏忽:

代码:

import pandas as pd
df1 = pd.DataFrame(data = [['cat', 1]], columns=['A1', 'A2'])
df2 = pd.DataFrame(data=[['dog', 2]], columns=['B1', 'B2'])
df3 = pd.DataFrame(data=[['fish', 3], ['bird', 4]], columns=['C1', 'C2'])
result = {"df{}".format(i): dict(df.values.tolist()) for i, df in enumerate([df1, df2, df3], start=1)}
print(result)

输出:

{'df1': {'cat': 1}, 'df2': {'dog': 2}, 'df3': {'fish': 3, 'bird': 4}}

或者,您可以按如下方式创建平面字典。 (DataFrame 信息丢失。)

替代方案:

alt = {k: v for df in [df1, df2, df3] for k, v in df.values.tolist()}
print(alt)

输出:

{'cat': 1, 'dog': 2, 'fish': 3, 'bird': 4}

【讨论】:

    猜你喜欢
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2016-09-29
    • 2023-03-08
    相关资源
    最近更新 更多