我有1000个csv文件,大小从8MB到17MB不等。每个文件有6个度量的一部分。示例如下:
File1 (columns): key, metric1, metric2, metric3
File1 (values): k1, m1, m2, m3
File2 (columns): key, metric4, metric5, metric6
File2 (values): k1, m4, m5, m6
File3 (columns): key, metric2, metric4, metric5, metric6
File3 (values): k2, m2, m4, m5, m6
我今天尝试的所有方法都将文件合并到以下输出中:
Output (columns): key, metric1, metric2, metric3, metric4, metric5, metric6
Output (values): key1, m1, m2, m3, null, null, null
key1, null, null, null, m4, m5, m6
key2, null, m2, null, m4, m5, m6
我真正需要的是按键列合并行:
Output (columns): key, metric1, metric2, metric3, metric4, metric5, metric6
Output (values): key1, m1, m2, m3, m4, m5, m6
key2, null, m2, null, m4, m5, m6
我知道pandas
可以做到这一点;但是,完成1000个文件可能需要很长时间。你知道吗
有点不清楚你的格式是什么,但我认为这会起作用:
注意事项:
-这要求您提前知道将显示哪些度量,以便可以初始化
expected_metrics
。您可以将最后一行替换为:这可能需要更长的时间
-如果某个特定(键、度量)组合出现多次,则只记录最后一个组合。你知道吗
-结果将以
key
作为索引。如果要将它作为数据列,则必须执行df['key'] = df.index
。你知道吗我不认为这需要“永远”;一千个文件最坏也需要几分钟,除非你有大量的度量标准。你知道吗
你也可以这样做:
这将提供一个字典,其中每个键都是数据中的一个键,值是表示该键所在行的字典。你知道吗
编辑: 第三个选项是获取已有的输出并执行
df.groupby(by='key').max()
这将创建一个数据帧,其中每个条目是具有相同键的所有行的最大度量。所以,同样,如果每个(键、度量)组合只有一个值,这应该会给出您想要的。如果有多个值,除最大值外,所有值都将被忽略。你知道吗相关问题 更多 >
编程相关推荐