■概要
以下の表データをpandasで読み取り、「START」、「KIND」、「END」について3種類のソートを行う。
KIND | START | END |
---|---|---|
a | 1 | 3 |
a | 2 | 3 |
b | 1 | 1 |
a | 4 | 2 |
c | 1 | 2 |
b | 1 | 3 |
a | 3 | 1 |
c | 2 | 3 |
b | 5 | 2 |
c | 3 | 3 |
▼START(昇順)、KIND(昇順)、END(昇順)の期待値
KIND | START | END |
---|---|---|
a | 1 | 3 |
b | 1 | 1 |
b | 1 | 3 |
c | 1 | 2 |
a | 2 | 3 |
c | 2 | 3 |
a | 3 | 1 |
c | 3 | 3 |
a | 4 | 2 |
b | 5 | 2 |
▼START(降順)、KIND(降順)、END(降順)の期待値
KIND | START | END |
---|---|---|
b | 5 | 2 |
a | 4 | 2 |
c | 3 | 3 |
a | 3 | 1 |
c | 2 | 3 |
a | 2 | 3 |
c | 1 | 2 |
b | 1 | 3 |
b | 1 | 1 |
a | 1 | 3 |
▼KIND(昇順)、START(昇順)、END(降順)の期待値
KIND | START | END |
---|---|---|
a | 1 | 3 |
a | 2 | 3 |
a | 3 | 1 |
a | 4 | 2 |
b | 1 | 3 |
b | 1 | 1 |
b | 5 | 2 |
c | 1 | 2 |
c | 2 | 3 |
c | 3 | 3 |
■サンプルコード
サンプルコードを以下に示す。
import pandas as pd
DATA_LIST = [
['a', 1, 3]
, ['a', 2, 3]
, ['b', 1, 1]
, ['a', 4, 2]
, ['c', 1, 2]
, ['b', 1, 3]
, ['a', 3, 1]
, ['c', 2, 3]
, ['b', 5, 2]
, ['c', 3, 3]
]
COLUMN_NAME_LIST = ['KIND', 'START', 'END']
if __name__ == '__main__':
df = pd.DataFrame(DATA_LIST, columns=COLUMN_NAME_LIST, index=None)
print('初期値')
print(df)
print('**********')
# START -> KIND -> ENDの順番でソート
# True:昇順
df_1 = df.sort_values(['START', 'KIND', 'END'], ascending=[True, True, True])
print('START -> KIND -> ENDの順番でソート(昇順)')
print(df_1)
print('**********')
# START -> KIND -> ENDの順番でソート
# FALSE:降順
df_2 = df.sort_values(['START', 'KIND', 'END'], ascending=[False, False, False])
print('START -> KIND -> ENDの順番でソート(降順)')
print(df_2)
print('**********')
# KIND -> START -> ENDの順番でソート
df_3 = df.sort_values(['KIND', 'START', 'END'], ascending=[True, True, False])
print('KIND(昇順) -> START(昇順) -> END(降順)の順番でソート')
print(df_3)
print('**********')
■実行結果
「■サンプルコード」にて記載したコードの実行結果を以下に示す。
初期値
KIND START END
0 a 1 3
1 a 2 3
2 b 1 1
3 a 4 2
4 c 1 2
5 b 1 3
6 a 3 1
7 c 2 3
8 b 5 2
9 c 3 3
**********
START -> KIND -> ENDの順番でソート(昇順)
KIND START END
0 a 1 3
2 b 1 1
5 b 1 3
4 c 1 2
1 a 2 3
7 c 2 3
6 a 3 1
9 c 3 3
3 a 4 2
8 b 5 2
**********
START -> KIND -> ENDの順番でソート(降順)
KIND START END
8 b 5 2
3 a 4 2
9 c 3 3
6 a 3 1
7 c 2 3
1 a 2 3
4 c 1 2
5 b 1 3
2 b 1 1
0 a 1 3
**********
KIND(昇順) -> START(昇順) -> END(降順)の順番でソート
KIND START END
0 a 1 3
1 a 2 3
6 a 3 1
3 a 4 2
5 b 1 3
2 b 1 1
8 b 5 2
4 c 1 2
7 c 2 3
9 c 3 3
**********
■参考URL
本記事作成にあたり、参考とさせていただいたURLを以下に記載する。
コメント