【问题标题】:Zipping dictionary to pandas [duplicate]将字典压缩到熊猫[重复]
【发布时间】:2022-01-08 01:58:07
【问题描述】:

我正在尝试将我的字典压缩到熊猫的数据框中,并通过字典中的键而不是手动进行:

import pandas as pd

dict = {'A': ['a1', 'a2', 'a3'], 'B': ['b1', 'b2', 'b3']}
columns = list(dict.keys())   # ['A', 'B']
manual_results = list(zip(dict['A'], dict['B'])) #  [('a1', 'b1'), ('a2', 'b2'), ('a3', 'b3')]
df = pd.DataFrame(manual_results, columns=columns)

我希望创建结果而不需要显式编写每个键的名称(dict['A']、dict['B'] 等)。有什么想法吗?

【问题讨论】:

  • 不需要压缩,pd.DataFrame(dict) 应该可以解决问题。
  • 并且不要使用dict作为名字,它是内置类型

标签: python pandas dictionary


【解决方案1】:

没有必要压缩它。 Pandas 可以直接从 dict 创建数据框:

import pandas as pd
d = {'A': ['a1', 'a2', 'a3'], 'B': ['b1', 'b2', 'b3']}
df = pd.DataFrame.from_dict(d)
print(df)
    A   B
0  a1  b1
1  a2  b2
2  a3  b3

参考:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.from_dict.html


注意:您也可以以其他方式定位它(因此 dict 键成为行索引而不是列)...

import pandas as pd
d = {'A': ['a1', 'a2', 'a3'], 'B': ['b1', 'b2', 'b3']}
df = pd.DataFrame.from_dict(d,orient='index')
print(df)
    0   1   2
A  a1  a2  a3
B  b1  b2  b3

【讨论】:

    【解决方案2】:

    没有必要将zip() 用作pd.DataFrame 本身期望参数data 是可以包含系列、数组等的dict。

    您可以简单地执行以下操作:

    import pandas as pd
    d = {'A': ['a1', 'a2', 'a3'], 'B': ['b1', 'b2', 'b3']}
    df = pd.DataFrame(d)
    

    哪个输出:

        A   B
    0  a1  b1
    1  a2  b2
    2  a3  b3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-14
      • 2020-12-01
      • 1970-01-01
      • 2020-05-08
      • 2019-07-13
      • 2014-07-24
      • 2019-08-20
      • 2020-12-01
      相关资源
      最近更新 更多