在python中将 Dataframe 列表合并到一个列表中

ufj5ltwl  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(362)

我有32个单独的 Dataframe 列表。我需要合并每个列表,我期待32个不同的 Dataframe 。我知道如何将1个 Dataframe 列表合并在一起,但我目前正在进行32次不同的计算。我想知道是否有一个简单的方法来做同样的计算?我现在有这个,我知道我正在创建一个新变量,但我不知道如何将它从输入分配回原始列表。”weather_list”是一个包含需要合并的 Dataframe 的每个列表的列表。
示例列表、数据和数据包含名为“雪”、“温度”等的 Dataframe 。。天气列表包含数据和数据日1列表

data = [snow, temp, windspd]
    data_day1 = [snow_day1, temp_day1, windspd_day1]
    weather_list = [data, data_day1]
    def mergedf(item):
        reduce(lambda left,right: pd.merge(left,right,on=['Latitude','Longitude'], how = 'outer'), item

    [mergedf(items) for items in weather_list]

我需要在以后的程序中单独使用每个合并的 Dataframe 。

qf9go6mv

qf9go6mv1#

考虑 map 对于elementwise,在您可以使用其进行备份的对象列表中循环 * .

data = [snow, temp, windspd]
data_day1 = [snow_day1, temp_day1, windspd_day1]
weather_list = [data, data_day1]

def proc_merge(left, right):
    return pd.merge(left, right, on=['Latitude', 'Longitude'])

df_list = list(map(proc_merge, *weather_list))

为了保留命名,考虑建立一个带有键的数据文件字典,而不是未命名的列表,您可以通过 zip 循环:

names = ['snow', 'temp', 'windspd']
df_dict = {nm: lst for nm, lst in zip(names, map(proc_merge, *weather_list))}

df_dict['snow']      # SINGLE DATAFRAME
df_dict['temp']      # SINGLE DATAFRAME
df_dict['windspd']   # SINGLE DATAFRAME

对于两个以上的 Dataframe ,集成 reduce 具有开放数量的参数:

data = [snow, temp, windspd]
data_day1 = [snow_day1, temp_day1, windspd_day1]
data_day2 = [snow_day2, temp_day2, windspd_day2]
data_day3 = [snow_day3, temp_day3, windspd_day3]

weather_list = [data, data_day1, data_day2, data_day3]

def proc_merge(*dfs):
    return reduce(lambda left, right: pd.merge(left, right, on=['Latitude', 'Longitude'], how ='outer'), dfs)

names = ['snow', 'temp', 'windspd']
df_dict = {nm: lst for nm, lst in zip(names, map(proc_merge, *weather_list))}

相关问题