【问题标题】:Automate the read and save of several json files (with different information) to different pandas dataframes自动读取多个 json 文件(具有不同信息)并将其保存到不同的 pandas 数据帧
【发布时间】:2018-05-09 22:28:28
【问题描述】:

我在一个文件夹中有几个 json 文件,每个文件都有不同的形状(行数和列数)和信息。

我有以下代码可以打开一个 json 文件并将其保存到 pandas df:

with open('f_fruit.json', 'r') as f:
    data = json.load(f)

df_fruit = pd.DataFrame(data['fruit'])

最后,我想要不同的熊猫数据框,每个json文件一个:

df_fruit

df_clothes

df_games

考虑到文件名和信息不遵循模式,自动化此代码的最佳方法是什么?可能吗?

【问题讨论】:

  • 您可能需要考虑使用字典,其中键是数据框名称,值是数据框。

标签: python json pandas


【解决方案1】:

假设您的文件按照相同的逻辑命名,我会执行以下操作:

files = ['f_fruit.json','f_clothes.json','f_games.json'] #you can use os.walk to get a list of files from a specific folder

for file_name in files:
    col_name = file_name.split('.')[0][2:]
    with open(file_name, 'r') as f:
        data = json.load(f)
    var_name = 'df_{}'.format(col_name)
    globals()[var_name] = pd.DataFrame(data[col_name])

但是,如果

文件名和信息不符合规律

那么没有简单的方法可以自动执行此操作。你需要一个模式。

这里是您可能感兴趣的部分,即如何使用 globals() 从内存中的值创建变量。

>>> col_name = 'fruit'
>>> var_name = 'df_{}'.format(col_name)
>>> globals()[var_name] = 'some value'
>>> df_fruit
'some value'

【讨论】:

  • 它几乎可以工作.. 我收到以下错误:文件“”,第 8 行 globals()[f'df_{var_name}'] = pd.DataFrame (data[var_name]) ^ SyntaxError: 无效语法
  • 你的 Python 版本是多少?
  • 我使用 Python 2。
  • @Thabra 立即尝试。
  • 谢谢!由于最后一行,我得到了一个错误:----> 9 globals()[var_name] = pd.DataFrame(data[col_name]) TypeError: list indices must be integers, not str
猜你喜欢
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 2019-02-24
  • 2022-01-15
相关资源
最近更新 更多