Rozdiel medzi jedinečné prvky zoradené stĺpce v dataframe

0

Otázka

Som trochu na tento nový. Ja som v súčasnosti experimentuje s údajmi rámy v jazyku python a som trochu zasekol sa s niečím. Potrebujem sa dostať do stĺpcov v dátovom rámu, ktoré majú rovnaký rozdiel medzi ich jedinečné zoradené prvky. Som schopný to urobiť v stand-alone kód, ale chcem, aby sa to dynamicky dostať to z údajov rám v súbore.

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)

Som schopný získať zoznam zoznamov rozdiel. Teraz musím skontrolovať, či všetky prvky v diff sú rovnaké, ak áno, potom sa vrátiť meno stĺpca, je to prvé alebo sec. Výstup mám, je:

   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])]

Po tomto by som sa mal vrátiť stĺpec meno alebo názov zoznamu, ktorý má rovnaké prvky. Požadovaný výstup by mal byť zoznam stĺpcov názvy stĺpcov, ktoré majú rovnaký rozdiel zoradené jedinečné prvky. Takže tu by to malo byť:

output - ['first']
dataframe pandas python
2021-11-24 06:13:28
1

Najlepšiu odpoveď

1

Použitie zoznamu s porozumením test, ak zoradené hodnoty differencies sú jedinečné:

#without unique values
output = [col for col in cols if df[col].sort_values().diff().nunique() == 1]
print("OUT - \n", output)
[0]

#with unique values
output = [col for col in cols 
          if df[col].drop_duplicates().sort_values().diff().nunique() == 1]

Alebo:

output = [col for col in cols if np.unique(np.diff(np.unique(df[col]))).shape[0] == 1]
print("OUT - \n", output)
[0]
2021-11-24 07:05:30

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................