私はこれに似たDataFrameを持っています:
list1 = [4656, 5455, 4545, 6992, 4233, 4596, 4699, 4899, 7896, 4526, 4872, 6952]
list2 = [4466, 4899, 4554, 4771, 1477, 1445, 4523, 1456, 3695, 6258, 1452, 4878]
index1= ['A50_C1','A50_C2','A50_I1','A50_I2','A50_N1','A50_N2','A60_C1','A60_C2','A60_I1','A60_I2','A60_N1','A60_N2']
s1 = pd.Series(list1, index=index1, name='list1')
s2 = pd.Series(list2, index=index1, name='list2')
pd.concat([s1, s2], axis=1)
これがどのように見えるかです:
list1 list2
test
A50_C1 4656 4466
A50_C2 5455 4899
A50_I1 4545 4554
A50_I2 6992 4771
A50_N1 4233 1477
A50_N2 4596 1445
A60_C1 4699 4523
A60_C2 4899 1456
A60_I1 7896 3695
A60_I2 4526 6258
A60_N1 4872 1452
A60_N2 6952 4878
使用しているインデックス(テスト列)を使用してgroupbyを作成したい:df2 = df1.groupby(df1.index)動作しているように見えますが、同じ行を複数回グループ化しています(おそらく異なる行を作成するため)組み合わせ可能)。
したがって、インデックスでレプリケートをgroupbyする方法を理解できません。つまり、C1-C2; I1-I2; N1-N2
結果は次のようになります。
list1 list2
test
A50_C1 4656 4466
A50_C2 5455 4899
list1 list2
test
A50_I1 4545 4554
A50_I2 6992 4771
list1 list2
test
A50_N1 4233 1477
A50_N2 4596 1445
何か案は ?
前もって感謝します
最善のアプローチは、グループ化する情報を含む列をDataFrameに追加することです。インデックスの各値は1つの文字列です。パンダはグループ化する部分を推測できないため、グループ化に関連する部分だけを明示的に抽出する必要があります。
あなたの例に基づくと、実際にグループ化したいのは、最後の文字を含まないインデックスの内容であるように見えます。したがって、その列を作成します。
df['label'] = df.index.to_series().str[:-1]
これdf.groupby('label')
で、目的の機能をグループ化することができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加