Supongamos que tengo la siguiente tabla:
table1 = pd.DataFrame([{'account': 'Jones LLC', 'Jan': 150, 'Feb': 200, 'Mar': 140},
{'account': 'Alpha Co', 'Jan': 200, 'Feb': 210, 'Mar': 215},
{'account': 'Blue Inc', 'Jan': 50, 'Feb': 90, 'Mar': 95 },
{'account': 'Jones LLC', 'Jan': 1350, 'Feb': 1200, 'Mar': 1404},
{'account': 'Alpha Co', 'Jan': 300, 'Feb': 400, 'Mar': 500}])
table2 = pd.DataFrame(['Jones LLC','Alpha Co', 'Blue Inc', 'Another Company'], columns=['account'] )
Estoy intentando crear una nueva columna en la tabla2 llamada "frecuencia" que cuenta cuántas veces aparece cada valor en la tabla2 en
table1['account']
. ¿Cómo hago esto?Además de esto, digamos que quiero que mi recuento de frecuencia de bucle for se aplique solo a las filas de la tabla1 donde el valor de
table1[Jan]
es mayor que 200. ¿Cómo debo escribir este "criterio múltiple" para bucle?
¿Estoy pensando mal en el problema? ¿No debería haber elegido usar un bucle for en absoluto? ¡Gracias!
2 respuestas
Usa map
con value_counts
Parte 1
In [876]: table2['freq'] = table2.account.map(table1.account.value_counts())
In [877]: table2
Out[877]:
account freq
0 Jones LLC 2.0
1 Alpha Co 2.0
2 Blue Inc 1.0
3 Another Company NaN
Parte 2
In [884]: table2['freqJAN>200'] = table2.account.map(
table1.query('Jan > 200').account.value_counts())
In [885]: table2
Out[885]:
account freq freqJAN>200
0 Jones LLC 2.0 1.0
1 Alpha Co 2.0 1.0
2 Blue Inc 1.0 NaN
3 Another Company NaN NaN
O table1[table1.Jan.gt(200)].account
en lugar de table1.query('Jan > 200').account
table3 = table1.groupby('account').size().to_frame('freq')
print(table3)
Salida:
freq
account
Alpha Co 2
Blue Inc 1
Jones LLC 2
O si necesita estadísticas en la lista de empresas:
table3 = table1.groupby('account').size().to_frame('freq').reindex(
table2.account,fill_value=0)
print(table3)
Salida:
freq
account
Jones LLC 2
Alpha Co 2
Blue Inc 1
Another Company 0
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.