次のデータフレームがあるとします。同じユーザーに対応する行を同じ日に追加するにはどうすればよいですか?Python-パンダ
user date text
A 1-1 how
A 1-1 are
A 3-1 the dog
B 1-2 hi
B 1-2 there
B 3-2 be good
user date text
A 1-1 how are
A 3-1 the dog
B 1-2 hi there
B 3-2 be good
groupbyとstringjoinを探しています:
df.groupby(['user','date'])['text'].apply(' '.join).reset_index()
注:
' '.join
はの短いバージョンですlambda x: ' '.join(x)
。
完全な例:
import pandas as pd
data = '''\
user,date,text
A,1-1,how
A,1-1,are
A,3-1,the dog
B,1-2,hi
B,1-2,there
B,3-2,be good'''
fileobj = pd.compat.StringIO(data)
df = pd.read_csv(fileobj, sep=',')
df = df.groupby(['user','date'])['text'].apply(' '.join).reset_index()
print(df)
戻り値:
user date text
0 A 1-1 how are
1 A 3-1 the dog
2 B 1-2 hi there
3 B 3-2 be good
それが役立つ場合は、これも見てください。リスト内のすべてのアイテムをグループ化するためのクイックバージョン。
print(df.groupby(['user','date'])['text'].apply(list).reset_index())
# user date text
#0 A 1-1 [how, are]
#1 A 3-1 [the dog]
#2 B 1-2 [hi, there]
#3 B 3-2 [be good]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加