あなたもできます。詳しくは
df.groupby(df.columns, axis=1).agg(lambda x: ','.join(x.values)))
Col1 Col2 Col3
Index
A CA1 CA2,CA5 CA3
B CB1 CB2,CB5 CB3
C CC1 CC2,CC5 CC3
D CD1 CD2,CD5 CD3
E CE1 CE2,CE5 CE3
を:使用グループ重複へdf.columns
上:
df.groupby(df.columns, axis=1).apply(lambda x: x.info())
<class 'pandas.core.frame.DataFrame'>
Index: 5 entries, A to E
Data columns (total 1 columns):
Col1 5 non-null object
dtypes: object(1)
memory usage: 80.0+ bytes
<class 'pandas.core.frame.DataFrame'>
Index: 5 entries, A to E
Data columns (total 2 columns):
Col2 5 non-null object
Col2 5 non-null object
dtypes: object(2)
memory usage: 120.0+ bytes
<class 'pandas.core.frame.DataFrame'>
Index: 5 entries, A to E
Data columns (total 1 columns):
Col3 5 non-null object
dtypes: object(1)
、その後、次のようになりgrouped
列に.values
を崩壊し','.join()
で.agg()
を使用します。
df.groupby(df.columns, axis=1).apply(lambda x: x.values)
Col1 [[CA1], [CB1], [CC1], [CD1], [CE1]]
Col2 [[CA5, CA5], [CB5, CB5], [CC5, CC5], [CD5, CD5...
Col3 [[CA3], [CB3], [CC3], [CD3], [CE3]]
列のみを複製するので、より多くを持っています
Col1 Col2 Col3
Index
A CA1 CA5,CA5 CA3
B CB1 CB5,CB5 CB3
C CC1 CC5,CC5 CC3
D CD1 CD5,CD5 CD3
E CE1 CE5,CE5 CE3
付:あなたが得るように、単一の値は、彼らだけでは、結合されますあなたはできるNone
型の値、:
df.groupby(df.columns, axis=1).apply(lambda x: x.apply(lambda y: ','.join([l for l in y if l is not None]), axis=1))
取得する:
Col1 Col2 Col3
Index
A CA1 CA5,CA5 CA3
B CB1 CB5,CB5 CB3
C CC1 CC5,CC5 CC3
D CD1 CD5 CD3
E CE1 CE5,CE5 CE3
そうです、 '.values'がありませんでした、ごめんなさい。 – Stefan
詳細を更新しました。 – Stefan
ステファンありがとう、はい。値がありませんでした。私の実際のデータフレームには、エラーを投げているという理由でNone値があります。あなたはこれを並べ替える方法を知っていますか? 私は上記の質問でこれを更新しました。 – Rtut