Estoy intentando asignar datos de un marco de datos a otro usando una declaración condicional, pero obtengo un error al hacerlo.
Datos de entrada:
amount
NaN
2100.05
3101
643
245
NaN
Fragmento de código:
df =pd.read_excel(open(r'C:\Users\Desktop\data.xlsx', 'rb'), sheet_name='sheet1')
df2 =pd.read_excel(open(r'C:\Users\Desktop\data.xlsx', 'rb'), sheet_name='sheet2')
if df['amount'] == NaN:
df2['expense'] = df2['full_exp'] = 00
else:
df2['expense'] = df2['expense'] = 01
print(df['expense'])
Resultado esperado:
expense
00
01
01
01
01
00
Por favor sugiera
------------------------------------
Puedes probar esto:
df2['expense'] = np.where(df['amount'].isna(), df2['full_exp'], df2['expense'])
Esto pondrá el valor de df2['full_exp'] donde df['amount'] es NaN y df2['expense'] en caso contrario.
Si desea leer más sobre .isna() y np.where(), puede visitar los documentos pandas.Series.isna y numpy.where.
------------------------------------
Prueba esto
import pandas as pd
import numpy as np
df =pd.read_excel(open(r'C:\Users\Desktop\data.xlsx', 'rb'), sheet_name='sheet1')
df2 =pd.read_excel(open(r'C:\Users\Desktop\data.xlsx', 'rb'), sheet_name='sheet2')
df2['expense'] = np.where(df['amount'].notnull(),'01',df2['expense'])
df2['expense'] = np.where(df['amount'].isnull(),'00',df2['expense'])
print(df2['expense'])