我在csv文件中有很多数据集,它们在我附上的图片中看起来像。
在第一列中始终是以分钟为单位的时间,但原始数据文件之间的时间步长和总行数不同。我想有一个输出文件(csv文件),其中所有原始文件被组合并按时间排序。这样时间从列的顶部到底部增加。
当存在多个数字时,应对浓度列求平均值。
我试过这样:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
d1 = pd.read_csv('dat1.txt', sep="\t")
d2 = pd.read_csv('dat2.txt', sep="\t")
d1.columns
d2.columns
merged_outer = pd.merge(d1,d2, on='time', how='outer')
print merged_outer
但它不会导致正确的输出。我是熊猫的初学者,但我希望我能够很好地解释这个问题。感谢您的任何想法或建议!
谢谢你的想法。不幸的是,当我运行它时,我收到一条错误消息,指出dat1.txt不存在。这对我来说很奇怪,因为我最初通过以下方式阅读原始文件:
d1 = pd.read_csv('dat1.txt', sep="\t")
d2 = pd.read_csv('dat2.txt', sep="\t")
抱歉,这里的数据为原始文本:
raw data 1
time column2 column3 concentration
1 2 4 3
2 2 4 6
4 2 4 2
7 2 4 5
raw data 2
time column2 column3 concentration
1 2 4 6
2 2 4 2
8 2 4 9
10 2 4 5
12 2 4 7
答案 0 :(得分:1)
这样的事情可能会起作用
filenames = ['dat1.txt', 'dat2.txt',...]
dataframes = {filename: pd.read_csv(filename, sep="\t") for filename in filenames}
merged_outer = pd.concat(dataframes).groupby('time').mean()
当您将字典传递给pd.concat
时,它会创建一个MultiIndex DataFrame,其dict键为level0