下記のデータフレーム にて、日付が重複していない日付が出る度に
新しいID番号を振り、変更前から変更後のようにデータフレーム を変更
するにはどうしたら良いでしょうか?
python
1df = pd.DataFrame( 2 { 3 '日付':["2月27日","2月27日","3月10日","4月10日", 4 "4月10日","4月10日","5月1日","6月28日"], 5)
変更前
....... 日付
0 2月27日
1 2月27日
2 3月10日
3 4月10日
4 4月10日
5 4月10日
6 5月1日
7 6月28日
変更後
....... 日付...........ID
0 2月27日.....1
1 2月27日.....1
2 3月10日.....2
3 4月10日.....3
4 4月10日.....3
5 4月10日.....3
6 5月1日......4
7 6月28日.....5
自分の試したこと
python
1 2array_unique = df['日付'].unique() 3list_unique = list(array_unique) 4 5#カウント列を追加し、同じ日付が出ると連番が振られるようにする。 6df['count'] = df.groupby('日付').cumcount()+1 7#countが1のみの重複しない行を抽出し、new_dfとする。 8new_df=df[df['count']==1] 9重複しない行の数の連番をリストにする 10new_list = list(range(len(list_unique))) 11上記連番リストをデータフレーム に代入 12new_df["ID"]=new_list 13
上記のように実行すると、一応、ID列を追加できるのですが、
: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
というエラーが出てしまいます。
エラーが出ない方法もしくは、もっとスムーズに実現する方法をご教授ください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/20 14:51