pandasデータフレームの正規表現で列名を変更してから、データフレームの形式を再配置します

ooikiam

次の形式のデータフレームがあります。

ここに画像の説明を入力してください

列名を変更し、データフレームを次の形式に再配置したい:-

ここに画像の説明を入力してください

以下のコードを試して、列名をオブジェクトからリストに変換してから、文字列を削除して分割しました。しかし、そうした後もまだ空白があります。理由はわかりません。

df_col_list=df.columns.tolist()
list =[]
for elem in df_col_list:
    list.extend(elem.strip().split(':'))
list

正規表現に移動して列名を置き換え、希望する最終的なデータフレーム形式でID列を入力します。

well_pattern=re.compile(r'[A-Z]{4}\d{4}')
for item_list in list:
    wellname=re.findall(well_pattern,item_list)
    for n in wellname:
        fld, well_no= n[:4], int(n[4:8])
        item_list = item_list.replace(n, '%s_%d_0' % (fld, well_no))
    print(item_list)

'MNIF0001'を 'MNIF_1_0'に変更するために機能しました。しかし、この出力を使用して、最終的なデータフレーム形式で新しい列を埋めるにはどうすればよいですか。

私は今立ち往生していて、どうすればいいのかわかりません。助けてください

前もって感謝します

ジェズリール

グループを照合するための最初のパターンを変更し、新しいヘルパーにr'([A-Z]{4})(\d{4})(.+)'使用Series.str.extractDataFrameます-2番目の列を整数に変換し、結合して割り当て直します。

次に、に使用Series.str.splitMultiIndexDataFrame.stackデータクレンジングによって形状を変更します- DataFrame.rename_axisDataFrame.reset_indexおよびDataFrame.sort_values

df = pd.DataFrame({
        'MNIF0001:w':[2] * 5,
        'MNIF0010:w':[4] * 5,
        'MNIF0001:f':[6] * 5,
        'MNIF0010:f':[8] * 5,

}, index=['01-Feb-63','01-Mar-63','01-Apr-63','01-May-63','01-Jun-63'])
df.index.name = 'date'
print (df)
           MNIF0001:w  MNIF0010:w  MNIF0001:f  MNIF0010:f
date                                                     
01-Feb-63           2           4           6           8
01-Mar-63           2           4           6           8
01-Apr-63           2           4           6           8
01-May-63           2           4           6           8
01-Jun-63           2           4           6           8

well_pattern=re.compile(r'([A-Z]{4})(\d{4})(.+)')
df1 = df.columns.to_series().str.extract(well_pattern)
print (df1)
               0     1   2
MNIF0001:w  MNIF  0001  :w
MNIF0010:w  MNIF  0010  :w
MNIF0001:f  MNIF  0001  :f
MNIF0010:f  MNIF  0010  :f

df.columns = df1[0] + '_' + df1[1].astype(int).astype(str) + '_0' + df1[2]
print (df)
           MNIF_1_0:w  MNIF_10_0:w  MNIF_1_0:f  MNIF_10_0:f
date                                                       
01-Feb-63           2            4           6            8
01-Mar-63           2            4           6            8
01-Apr-63           2            4           6            8
01-May-63           2            4           6            8
01-Jun-63           2            4           6            8

df.columns = df.columns.str.split(':', expand=True)
df = df.stack(0).rename_axis(('date','ID')).reset_index().sort_values(['ID','date'])
print (df)
        date         ID  f  w
4  01-Apr-63  MNIF_10_0  8  4
0  01-Feb-63  MNIF_10_0  8  4
8  01-Jun-63  MNIF_10_0  8  4
2  01-Mar-63  MNIF_10_0  8  4
6  01-May-63  MNIF_10_0  8  4
5  01-Apr-63   MNIF_1_0  6  2
1  01-Feb-63   MNIF_1_0  6  2
9  01-Jun-63   MNIF_1_0  6  2
3  01-Mar-63   MNIF_1_0  6  2
7  01-May-63   MNIF_1_0  6  2

編集:ID列を操作columnsする必要がある場合はID次の場所のみ移動してください:

df.columns = df.columns.str.split(':', expand=True)
df = df.stack(0).rename_axis(('date','ID')).reset_index().sort_values(['ID','date'])

well_pattern=re.compile(r'([A-Z]{4})(\d{4})')
df1 = df['ID'].str.extract(well_pattern)
df['ID'] = df1[0] + '_' + df1[1].astype(int).astype(str) + '_0'
print (df)
        date         ID  f  w
4  01-Apr-63   MNIF_1_0  6  2
0  01-Feb-63   MNIF_1_0  6  2
8  01-Jun-63   MNIF_1_0  6  2
2  01-Mar-63   MNIF_1_0  6  2
6  01-May-63   MNIF_1_0  6  2
5  01-Apr-63  MNIF_10_0  8  4
1  01-Feb-63  MNIF_10_0  8  4
9  01-Jun-63  MNIF_10_0  8  4
3  01-Mar-63  MNIF_10_0  8  4
7  01-May-63  MNIF_10_0  8  4

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

正規表現を使用して、パンダのデータフレームから要素を抽出します

分類Dev

pandasデータフレームで正規表現を使用して列の値を置き換えます

分類Dev

正規表現を使用して行の値を変更しながら、パンダのデータフレームをループします

分類Dev

正規表現を使用してパンダデータフレームの列の名前を変更する

分類Dev

正規表現と辞書を使用してデータフレーム列の名前を変更する

分類Dev

複数列のデータフレームを再配置します

分類Dev

データフレームの行を再配置します

分類Dev

データフレームの行を再配置します

分類Dev

Python Pandasデータフレーム:0.01から0.99の間でデータを正規化しますか?

分類Dev

データフレームの列名を文字列形式から日時に変更します

分類Dev

pandas データ フレームの正規表現を使用して、すべての数値 (0 と 1 を除く) を 0 に変更する

分類Dev

別のデータフレームインデックスからの日と月に基づいてデータフレームを再配置します

分類Dev

正規表現を使用して、データフレームから列を削除/除外します-Python

分類Dev

R-正規表現を使用してデータフレームから情報を抽出します

分類Dev

データフレームを再配置しますか?

分類Dev

正規表現を使用してデータレコードの順序を変更し、1つのデータフレームにまとめるにはどうすればよいですか?

分類Dev

pandas正規表現を使用してデータフレームヘッダーを検証します

分類Dev

重複する列名を持つPandasデータフレームの列の名前を変更しますか?

分類Dev

Rで、データフレーム列を2番目の列の最初の出現から変更します

分類Dev

rで正規表現を使用して2つのデータフレームを一致(結合)する

分類Dev

dplyrを使用して列名に従ってデータフレームの値を変更しますか?

分類Dev

提供された別の列名を使用してデータフレーム値Rを変更しますか?

分類Dev

R-データフレーム内のデータを2列でグループ化し、新しいデータフレームに再配置します

分類Dev

データフレームのリストの列名を変更します

分類Dev

リスト内のデータフレームの列名を変更します

分類Dev

パンダで正規表現を使用して、2つのデータフレーム間で左結合/マージを実行できますか?

分類Dev

kerascnnのデータフレーム行の内容を再配置します

分類Dev

Scalaを使用して、別のデータフレームに対してデータフレームの列名の名前を変更します

分類Dev

正規表現を使用してパンダデータフレームの列からデータを抽出する

Related 関連記事

  1. 1

    正規表現を使用して、パンダのデータフレームから要素を抽出します

  2. 2

    pandasデータフレームで正規表現を使用して列の値を置き換えます

  3. 3

    正規表現を使用して行の値を変更しながら、パンダのデータフレームをループします

  4. 4

    正規表現を使用してパンダデータフレームの列の名前を変更する

  5. 5

    正規表現と辞書を使用してデータフレーム列の名前を変更する

  6. 6

    複数列のデータフレームを再配置します

  7. 7

    データフレームの行を再配置します

  8. 8

    データフレームの行を再配置します

  9. 9

    Python Pandasデータフレーム:0.01から0.99の間でデータを正規化しますか?

  10. 10

    データフレームの列名を文字列形式から日時に変更します

  11. 11

    pandas データ フレームの正規表現を使用して、すべての数値 (0 と 1 を除く) を 0 に変更する

  12. 12

    別のデータフレームインデックスからの日と月に基づいてデータフレームを再配置します

  13. 13

    正規表現を使用して、データフレームから列を削除/除外します-Python

  14. 14

    R-正規表現を使用してデータフレームから情報を抽出します

  15. 15

    データフレームを再配置しますか?

  16. 16

    正規表現を使用してデータレコードの順序を変更し、1つのデータフレームにまとめるにはどうすればよいですか?

  17. 17

    pandas正規表現を使用してデータフレームヘッダーを検証します

  18. 18

    重複する列名を持つPandasデータフレームの列の名前を変更しますか?

  19. 19

    Rで、データフレーム列を2番目の列の最初の出現から変更します

  20. 20

    rで正規表現を使用して2つのデータフレームを一致(結合)する

  21. 21

    dplyrを使用して列名に従ってデータフレームの値を変更しますか?

  22. 22

    提供された別の列名を使用してデータフレーム値Rを変更しますか?

  23. 23

    R-データフレーム内のデータを2列でグループ化し、新しいデータフレームに再配置します

  24. 24

    データフレームのリストの列名を変更します

  25. 25

    リスト内のデータフレームの列名を変更します

  26. 26

    パンダで正規表現を使用して、2つのデータフレーム間で左結合/マージを実行できますか?

  27. 27

    kerascnnのデータフレーム行の内容を再配置します

  28. 28

    Scalaを使用して、別のデータフレームに対してデータフレームの列名の名前を変更します

  29. 29

    正規表現を使用してパンダデータフレームの列からデータを抽出する

ホットタグ

アーカイブ