用Python清理后保存数据帧

时间:2019-02-05 19:37:06

标签: python python-3.x pandas

我有一个JSON集合,它们都具有相同的格式和相同的数据不规则性,我想对其进行清理并最终转换为可在Python中使用的数据框。

当我在每个JSON上重复执行相同的过程时,循环似乎是最自然的解决方案。

在清理后将数据帧重新分配给变量时,我遇到了一个问题,因为似乎没有一种自然的方式来存储它们。

我知道Python不赞成动态创建变量名。我想避免使用字典或以其他方式创建holder变量来实现此目的。由于我有一个变量列表和一个df占位符,因此在清理后如何分配/命名变量对我来说并不明显。

下面的代码。关于如何在循环结束时保存清理后的数据帧的任何建议?

vars = [a, b, c]

# clean data iteratively
for i in vars:
    df = pd.DataFrame(i)
    df['value'] = df['value'].replace('.', np.nan).fillna(method='bfill')
    df['value'] = pd.to_numeric(df['value'])
    [???] = df

3 个答案:

答案 0 :(得分:1)

除非我误解了您要查找的内容,否则似乎一种简单的方法是枚举vars列表(vars是内置的btw,在长期),然后通过索引分配回该列表。

vars = [a, b, c]

# clean data iteratively
for (i,v) in enumerate(vars):
    df = pd.DataFrame(v)
    ...
    vars[i] = df

答案 1 :(得分:1)

完全可以使用Holder变量。但是,如果您真的不想创建另一个变量,则可以覆盖列表中已有的变量。

vars = [a, b, c]

# clean data iteratively
for index, i in enumerate(vars):
    df = pd.DataFrame(i)
    df['value'] = df['value'].replace('.', np.nan).fillna(method='bfill')
    df['value'] = pd.to_numeric(df['value'])
    vars[index] = df

答案 2 :(得分:0)

您将必须使用某种结构来保存已保存的已清理dfs,否则您将被覆盖它们。因此,应该使用列表或字典(甚至是另一个df)。