私があるとき、私はkey
とword
列にデータを格納するためにnecessary- -AS追加key
とword
列を作成したい3つの列(ID
、key
、およびword
)各行が重複行のすべてのデータを格納するようにデータフレームを変更する方法?
ID key word
0 1 A Apple
1 1 B Bug
2 2 C Cat
3 3 D Dog
4 3 E Exogenous
5 3 E Egg
と、このデータフレームを持っています重複している行はIDs
これは出力の抜粋です
ID key_0 key_1 word_0 word_1
0 1 A B Apple Bug
注:重複ID
に関連付け"key"
値"B"
新しいカラム"key_1"
に格納されるように、上記出力、ID
#1
は、データフレームに二回登場。重複番号ID
#1
にあるBug
という単語は、新しい列word_1
にも格納されます。
完了出力は次のことを好きでなければならない:完全な出力の
ID key_0 key_1 key_2 word_0 word_1 word_2
0 1 A B NaN Apple Bug NaN
1 2 C NaN NaN Cat NaN NaN
2 3 D E E Dog Exogenous Egg
お知らせ、ID
#3
を3回繰り返しました。 2番目のリピート"E"
のkey
は"key_1"
カラムに格納され、3番目のリピート"E"
は新しいカラム"key_2"
に格納されます。これは同じマンナの"Exogenous"
と"Egg"
という単語に当てはまります。
は私がAlex'sソリューション有用であることが判明、それだけでkey
列に動作します:
df.groupby('ID')['key'].apply(
lambda s: pd.Series(s.values, index=['key_%s' % i for i in range(s.shape[0])])).unstack(-1)
任意のアイデアはどのように私は、ラムダ関数はkey
とword
列の両方のために働くことができますか?
あなたはアレックスのソリューションを使用した後に連結を使用することができ、
をこれはエラーになります.. 'TypeError:非NDFrameオブジェクトを連結できません' @Gaurav Dhama – MEhsan
私はunique()がデータフレームではなくndarrayを与えることを忘れています。これを反映するために答えを変更しました。 –