我有一个数据框
cat input.csv
dwelling,wall,weather,occ,height,temp
5,2,Ldn,Pen,154.7,23.4
5,4,Ldn,Pen,172.4,28.7
3,4,Ldn,Pen,183.5,21.2
3,4,Ldn,Pen,190.2,30.3
我试着对它应用下面的函数:
input_df = pd.read_csv('input.csv')
def folder_column(row):
if row['dwelling'] == 5 and row['wall'] == 2:
return 'folder1'
elif row['dwelling'] == 3 and row['wall'] == 4:
return 'folder2'
else:
return 0
我想在输入数据集上运行该函数,并将输出存储在一个单独的数据框中,如下所示:
temp_df = pd.DataFrame()
temp_df = input_df['archetype_folder'] = input_df.apply(folder_column, axis=1)
但是当我这样做的时候,我只在temp_df中得到了新创建的'archetype_folder',而我想要input_df中的所有原始列。有人能帮忙吗?注意,我不想把新列'archetype_folder'添加到原始的input_df中。
temp_df = input_df
temp_df['archetype_folder'] = temp_df.apply(folder_column, axis=1)
但是当我运行第二个命令时,input_df和temp_df都以新列结束。
任何帮助都是感激的!
3条答案
按热度按时间4urapxun1#
使用Dataframe.copy:
im9ewurl2#
您需要创建原始DataFrame的 * 副本 *,然后将函数的返回值赋给它,请考虑以下简单示例
给出输出
mum43rcc3#
您不需要
apply
。使用.loc
可以提高效率。