나는 목록으로 주문 내에서 항목을 얻을 수있는 CSV를 바꿀려고 내에서 항목의 목록을 가져올 CSV를 바꿀.파이썬 팬더 카테고리
나는 상판과 같은 뭔가를하고 아래 테이블을 얻을합니다. 미리 감사드립니다! 이 줄리아처럼
나는 목록으로 주문 내에서 항목을 얻을 수있는 CSV를 바꿀려고 내에서 항목의 목록을 가져올 CSV를 바꿀.파이썬 팬더 카테고리
나는 상판과 같은 뭔가를하고 아래 테이블을 얻을합니다. 미리 감사드립니다! 이 줄리아처럼
,
는import pandas as pd
df = pd.DataFrame({'mmddyyyy':['1/22/17']*5,
'customer_id':[1,1,2,2,2],
'order_id':[67,67,50,51,51],
'item_id':['hat','hat','pants','hat','pants']})
df
출력 :
이제customer_id item_id mmddyyyy order_id
0 1 hat 1/22/17 67
1 1 hat 1/22/17 67
2 2 pants 1/22/17 50
3 2 hat 1/22/17 51
4 2 pants 1/22/17 51
,의 다음 reset_index
을 apply
와 groupby
및 list
을 실행하자 :
df.groupby(['mmddyyyy','customer_id','order_id'])['item_id']\
.apply(list).reset_index()
출력 resu lt df :
mmddyyyy customer_id order_id item_id
0 1/22/17 1 67 [hat, hat]
1 1/22/17 2 50 [pants]
2 1/22/17 2 51 [hat, pants]
다음과 같이하십시오.
import pandas as pd
dataframe_top = pd.read_csv('your_file.csv')
dataframe_bottom = dataframe_top.groupby('order_id').agg({
'mmddyyyy': 'first',
'customer_id': 'first',
'item_id': lambda x: list(x)
}).reset_index()
또한, 다음도 작동합니다 :
import pandas as pd
dataframe_top = pd.read_csv('your_file.csv')
dataframe_bottom = dataframe_top\
.groupby(['mmddyyyy', 'customer_id', 'order_id'])\
.apply(list)[['item_id']]\
.reset_index()
를 두 경우 모두, 우리는 order_id
에 의해 그룹화하고, 열 item_id
로 기능 list
를 적용하고 있습니다. 모든 순서 식별자 어쨌든 동일한 mmddyyyy
및 customer_id
을 가지고 있기 때문에 두 번째의 경우, 처음 세 열로 그룹화하는 단계, 생성 된 테이블의 행의 구조를 변경하지 않는다. https://chrisalbon.com/python/pandas_apply_operations_to_groups.html
이 (가) agg
방법에 대해 다음을 참조하십시오 :
는하여 groupby
방법에 대해 다음을 참조하십시오. http://pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html 이 (링크에서 In [20]:
및 In [21]:
까지 아래로 스크롤합니다.)합니다 (groupby
개체의 방법은, 단지 groupby
방법의 끝에 추가 할 수 있습니다 IE)
편집 : 최종 참고 :이 확실 니가 원하는거야? 이것은 궁극적 인 목표의 중간 단계와 같습니다. 궁극적 인 목표는 실제로이 변환을 필요로하지 않지만 일부 다른 기능은 groupby
입니다. 대신 최종 목표를 달성하는 방법을 묻는 것을 고려하십시오.
저에게 승리하는 전략처럼 보입니다! – piRSquared