Saya memiliki bingkai data yang perlu saya split berdasarkan garis lintang. Contoh kolom dataframe: df.glat = [-20, -30, -50, -60, -70, -80, -90, -50, -50, - 30, -20, -10, 10, 20, 30] Saya ...

0
Kateryna Lubyk 5 April 2021, 21:14

1 menjawab

Jawaban Terbaik
df = pd.DataFrame({'glat': [-20, -30, -40, 10, 20, 30, -40, -50, -60]})

df['is_increasing'] = df['glat'].diff().bfill().gt(0)
df['group'] = df['is_increasing'].diff().bfill().cumsum()

df.groupby('group')['glat'].apply(list)

Keluaran:

group
0    [-20, -30, -40]
1       [10, 20, 30]
2    [-40, -50, -60]
Name: glat, dtype: object

P. df akan mendapatkan kolom group dengan ID grup, sehingga Anda dapat dengan mudah membaginya menjadi data terpisah bingkai nanti (misalnya, dengan dataframes = [df for _, df in df.groupby('group')]):

   glat  is_increasing  group
0   -20          False      0
1   -30          False      0
2   -40          False      0
3    10           True      1
4    20           True      1
5    30           True      1
6   -40          False      2
7   -50          False      2
8   -60          False      2
1
perl 5 April 2021, 18:59