Soy un poco nuevo en esto. Actualmente estoy experimentando con marcos de datos en python y estoy un poco atascado con algo. Necesito obtener las columnas en el marco de datos que tienen la misma diferencia entre sus únicos elementos ordenados. Yo soy capaz de hacerlo en un stand-alone código, pero quiero hacerlo de forma dinámica mediante la obtención de la trama de datos en un archivo.
import numpy as np
import pandas as pd
first = [20, 10, 40, 30, 10]
sec = [94, 74, 34, 80]
df = pd.DataFrame([(first,sec) for first,sec in zip(first,sec)])
print(df)
cols = list(df.columns)
sorted_df = df.sort_values(by = cols, ascending = True)
print("sorted - \n", sorted_df)
all_unique = [sorted_df[col].unique() for col in cols]
print("UNIQUE:\n", all_unique)
diff = [np.diff(lst) for last in all_unique]
print("DIFF - \n", diff)
Soy capaz de conseguir la lista de las listas de la diferencia. Ahora tengo que comprobar si todos los elementos en el diff son los mismos, si sí, entonces tiene que devolver el nombre de la columna, ser primero o segundo. La salida que tengo es:
0 1
0 20 94
1 10 74
2 20 34
3 30 80
sorted -
0 1
0 20 94
1 10 74
2 20 30
3 30 80
UNIQUE:
[array([10, 20, 30]), array([74, 34, 94, 80])]
DIFF -
[array([10, 10]), array([-40, 60, -14])]
Después de esto, me debe devolver el nombre de la columna o el nombre de la lista que tiene los mismos elementos. La salida deseada debe ser una lista de nombres de columna de las columnas que tienen la misma diferencia de las ordenadas de elementos únicos. Así que aquí debería de ser:
output - ['first']