使用Pythons Pandas Dataframe在循环中收集数据

时间:2015-11-09 12:04:22

标签: python loops pandas

我正在尝试使用python的pandas模块从csv文件中提取数据。实验数据有6列(比如a,b,c,d,e,f),我有一个模型目录列表。并非每个型号都有6种物种。 (列)所以我需要专门为每个模型拆分数据。这是我的代码:

    def read_experimental_data(self,experiment_path):
        [path,fle]=os.path.split(experiment_path)
        os.chdir(path)
        data_df=pandas.read_csv(experiment_path) 
#        print data_df
        experiment_species=data_df.keys() #(a,b,c,d,e,f)
#        print experiment_species
        for i in self.all_models_dirs: #iterate through a list of model directories.
            [path,fle]=os.path.split(i)
            model_specific_data=pandas.DataFrame()
            species_dct=self.get_model_species(i+'.xml') #gives all the species (culuns) in this particular model
#            print species_dct
            #gives me only species that are included in model dir i
            for l in species_dct.keys(): 
                for m in experiment_species:
                    if l == m:
                         #how do i collate these pandas series into a single dataframe?
                        print data_df[m]

上面的代码为我提供了正确的数据,但我无法以可用的格式收集它。我试图合并并连接它们但没有快乐。有没有人知道怎么做?

由于

1 个答案:

答案 0 :(得分:1)

你可以通过传递一个你想要的列列表,从data_df创建一个新的DataFrame,

import pandas as pd
df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]})
df_filtered = df[['a', 'c']]

或使用某些变量名称的示例

import pandas as pd
data_df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6],
                   'd': [7,8], 'e': [9,10], 'f': [11,12]})
experiment_species = data_df.keys()
species_dct = ['b', 'd', 'e', 'x', 'y', 'z']
good_columns = list(set(experiment_species).intersection(species_dct))
df_filtered = data_df[good_columns]