我正在尝试构建一个函数,以将 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)])
但是它不起作用。任何建议都非常受欢迎!谢谢!
您似乎走在正确的轨道上,使用 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)
我也在这个网站
应用了这个