将列合并为一列的Python函数

问题描述 投票:0回答:1

我正在尝试构建一个函数,以将 csv 文件应用于不同的列。该函数的目的是使用此处描述的combine_first方法将多个列合并为一个:How to merge/combine columns in pandas?

我喜欢创建一个带有参数的函数:csvName、ColName、NumberOfCol,并为该 csv 文件生成一个新的(组合)列。因为需要对不同的列集进行分组(并且有多个 csv 文件),所以我喜欢对每组列使用一个函数。

示例列(仅显示需要合并的列,DF 还有许多其他我需要保留的列):

DF = {'A1': [tree, grass, np.nan, np.nan, np.nan, np.nan],  
    'A2': [np.nan, np.nan, bird, fly, np.nan, np.nan],
    'A3': [np.nan, np.nan, np.nan, np.nan, cat, dog]}

DF["A"] = pd.concat([DF["A1"].\
                           combine_first(DF["A2"]).\
                               combine_first(DF["A3"])], 
            axis=1)
DF.rename(columns={"A1":"A"}, inplace=True)

结果列将变为:

DF = {'A': [tree, grass, bird, fly, cat, dog]}

我喜欢将这个操作变成一个函数,这样我就可以输入csv的名称、列名(例如A)和需要合并的列数

我现在有这样的事情:

   def column_merger(csvName, ColName, length:int):
        OriginalNameList = []
        for number in range(length):
            OriginalNameList.append(ColName + str(number))
    
        NewList = OriginalNameList[1:]

        for name in Newlist:
            NewList.append()
        command = []
        command.extend([.combine_first(SurveyName[NewList[name]]) for name in range(NewList)])

但是它不起作用。任何建议都非常受欢迎!谢谢!

python function append
1个回答
0
投票

您似乎走在正确的轨道上,使用 pandas 中的 merge_first 方法创建一个函数来合并 CSV 文件中的列。但是,您的代码中有一些问题需要解决。这是您的函数的修订版本以及说明:

蟒蛇 将 pandas 导入为 pd

def column_merger(csvName, ColName, 长度): # 将 CSV 文件读入 DataFrame df = pd.read_csv(csvName)

# Create a list of column names to be merged
original_name_list = [f"{ColName}{i}" for i in range(length)]

# Combine the columns using the `combine_first` method
merged_column = df[original_name_list[0]]
for name in original_name_list[1:]:
    merged_column = merged_column.combine_first(df[name])

# Rename the merged column to the desired column name
df[ColName] = merged_column

# Drop the original columns that were merged
df.drop(columns=original_name_list, inplace=True)

# Return the modified DataFrame
return df

使用示例:

merged_df = column_merger("your_csv_file.csv", "A", 3) 打印(merged_df)

我也在这个网站

应用了这个
© www.soinside.com 2019 - 2024. All rights reserved.