Я хочу ввести df
в функцию, вызвать выходной файл другого фрейма данных 'df_fn' и иметь df
неизменным.Как мне это сделать?
Мой код либо ничего не делает, и df_fn
равно df
или df_fn
, и df
оба изменены.
с использованием df_fn[cols][df_fn.fuel_type != 'gas'] = np.nan
import pandas as pd
import numpy as np
df = pd.DataFrame({'n_wheels': [2, 4, 4],
'color': ['red', 'blue', 'red'],
'year': [2010, 1990, 1999],
'fuel_type': ['diesel', 'gas', 'electric']})
print('df = \n', df)
def fn(df_fn):
cols = ['n_wheels', 'color', 'year']
# df_fn.loc[df_fn.fuel_type != 'gas', cols] = np.nan
df_fn[cols][df_fn.fuel_type != 'gas'] = np.nan
return df_fn
new_df = fn(df)
print('df = \n', df)
print('new_df = \n', new_df)
вывод:
df =
n_wheels color year fuel_type
0 2 red 2010 diesel
1 4 blue 1990 gas
2 4 red 1999 electric
df =
n_wheels color year fuel_type
0 2 red 2010 diesel
1 4 blue 1990 gas
2 4 red 1999 electric
new_df =
n_wheels color year fuel_type
0 2 red 2010 diesel
1 4 blue 1990 gas
2 4 red 1999 electric
с использованием df_fn.loc[df_fn.fuel_type != 'gas', cols] = np.nan
print('df = \n', df)
def fn(df_fn):
cols = ['n_wheels', 'color', 'year']
# df_fn[cols][df_fn.fuel_type != 'gas'] = np.nan
df_fn.loc[df_fn.fuel_type != 'gas', cols] = np.nan
return df_fn
new_df = fn(df)
print('df = \n', df)
print('new_df = \n', new_df)
вывод:
df =
n_wheels color year fuel_type
0 2 red 2010 diesel
1 4 blue 1990 gas
2 4 red 1999 electric
df =
n_wheels color year fuel_type
0 NaN NaN NaN diesel
1 4.0 blue 1990.0 gas
2 NaN NaN NaN electric
new_df =
n_wheels color year fuel_type
0 NaN NaN NaN diesel
1 4.0 blue 1990.0 gas
2 NaN NaN NaN electric