重新排列数据框

时间:2019-12-14 23:18:11

标签: python python-3.x pandas csv dataframe

我在代表每个“区域” 的不同文件夹中有一组文件。例如,英格兰,爱尔兰,德国等。在此文件夹中的每个文件夹中,都可以找到几个文件,让它们分别调用“参数” 。Temperature.csv,Air.csv,Water.csv等。这两个区域都是并且参数可以更改,所选文件另外存储在列表“区域”和“参数”中。 (它基本上允许程序选择在处理数据时要包括的区域和参数,而忽略其他文件)

当前数据的格式如下:

Text

我需要的是这样的数据:

Text

对于每个地区,例如英格兰,它需要加载从其目录中选择的每个文件,并将每个文件“ Value”作为新列放入新的dataframe / csv中,并按示例ID进行匹配,“ event”应为如果其中至少一个参数包含1,则为1,否则为0。 如果不清楚,我可以提供更多示例或进一步解释。最大的障碍是参数或区域的数量可以更改,字段也可以更改,例如,“采样日期”可以忽略,也可以添加其他内容,例如“卫生监督”或文件中存在的任何其他文件。

下面的一些代码:(它不会重新排列字段,而是加载它们,添加新列并将其成功保存为一个文件。)

for region in regions:
    region_data = []
    for parameter in parameters:
        #for some reason I need to add "+ ['']" at the end of the line below or I get TypeError: 'NoneType' object is not subscriptable, can someone explain why?
        names = fields + ['Events']
        file = '/Data/EventData/' + region + '/' + parameter + '.csv'
        parameter_data = pd.read_csv(file, header=None, parse_dates=[0], names=names, delimiter=';')
        for index, row in parameter_data.iterrows():
            row = [[row["Result"], row["Sample ID"], row["Sample Date"], row["Events"], parameter]]
            row_df = pd.DataFrame(row, columns=['Result', 'Sample ID', 'Sample Date', 'Events', 'Parameter'])
            region_data.append(row_df)
    region_data = pd.concat(region_data)
    save_dir = '/Data/FinishedData/' + region + '.csv'
    region_data.to_csv(save_dir, header=None, index=False, sep=';')

坦率地说,我无法想到一种方法,因为它可以同时分组,重新排列和合并,同时允许在运行时可以选择的区域,参数和字段的数量不断变化,我尝试了很多不同的方法,但是它们要么不起作用,要么抛出一些奇怪的错误。

0 个答案:

没有答案
相关问题