65423


dataframe型のビックデータがあります。  
このデータからuser_id毎にデータを分離し、user_idがファイル名になるcsvファイルとして書き込みしたいです。

出来るところまでコードを組んでみましたが、ディレクトリのパスの指定からディレクトリ名の設定方法について教えてもらえますか？

[code]

    user_unique = list(set(df["user_id"]))
    for i in range(len(user_unique)):
        a=df[df["user_id"]==user_unique[i]]
        a=a.sort_values(by='utc')
        a=a.reset_index(drop=True)
        dflist=pd.DataFrame(a)
        dflist.to_csv(str(user_unique[i])+'.csv',index=False)
    
[/code]

**対象のデータ**

[![画像の説明をここに入力](https://i.stack.imgur.com/8307Z.png)](https://i.stack.imgur.com/8307Z.png)


CC BY-SA 4.0
2020-04-06T17:35:39.083
65410
2020-04-07T02:08:04.723
2020-04-07T01:44:41.453
3060
37823
question
python python3
dataframeからuser_id毎にデータを分離させuser_idがファイル名となるcsvファイルを作り指定フォルダに書き込みしたい


pandas.DataFrameの[groupby](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.DataFrame.groupby.html)を使えば少し簡単に出来るでしょう。

フォルダ・ファイル名操作はフォルダが既に有れば文字列の連結だけで出来ます。  
作成する場合は[pathlib](https://docs.python.org/ja/3/library/pathlib.html)などですね。

例えばこれらの記事です。  
[Looping over groups in a grouped
dataframe](https://stackoverflow.com/q/45797633/9014308)  
[Python、pathlibモジュールを使う](https://narito.ninja/blog/detail/72/)

上記にならえば、以下のように考えられます。(もう少し工夫すれば行数は削減出来そうですが)

[code]

    import pandas as pd
    from pathlib import Path
    
    targetfolder = Path('C:/WorkSpace/')
    targetfolder.mkdir(parents=True, exist_ok=True) # フォルダを作成する場合
    for user_id, grouped in df.groupby('user_id'):
        dfwork = grouped.sort_values('utc')
        dfwork = dfwork.reset_index(drop=True)
        filename = Path(targetfolder, (user_id + '.csv'))
        dfwork.to_csv(filename, index=False)
    
[/code]


CC BY-SA 4.0
2020-04-07T02:08:04.723
65423
2020-04-07T02:08:04.723
26370
65410
answer