将大量空白列合并为一列(Postgres和Python)

时间:2016-07-08 15:36:58

标签: python postgresql

我有一个包含500多列的原始数据表,我将其导入到其他数据库中。这些列中的大多数都为空(例如:session1session2session3session120)。我没有设计这个表,但有3种列类型,每列超过100列。除非进行某些非常具体的分析或调查(如果有的话),否则大多数都不需要使用。

是否有一种很好的方法可以将这些列合并到一个可以解压缩的合并列中?'后来?如果有重要事项,我不想丢失信息 这是我天真的方法(在将原始数据插入postgres之前使用pandas修改原始数据):

column_list = []
for val in range(10, 120):
    column_list.append('session' + str(val))
df['session_10_to_120'] = df[column_list ].astype(str).sum(axis=1).replace('', ',', regex = True)\n",
for col in column_list :
    df.drop(col, axis=1, inplace=True)

我不想把我的COPY语句弄糟到postgres(可能认为逗号是单独的列)。

有什么建议吗?这里的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

我取决于你想对这些列做什么,但选项包括

  • 阵列
  • 非关系存储:hstore,json,xml
  • 将列转换为另一个表中的行