홈>
내 문제 :출력 변수를 비슷한 크기의 데이터 프레임에 분리하고 병합하려고합니다.
모델 출력 : "var"
{('Product1', 0): <gurobi.Var listing[Product1,0] (value 1.0)>, ('Product1', 1): <gurobi.Var listing[Product1,1] (value 0.0)>, ('Product1', 2): <gurobi.Var listing[Product1,2] (value 0.0)>, ('Product1', 3): <gurobi.Var listing[Product1,3] (value 0.0)>, ('Product2', 0): <gurobi.Var listing[Product2,0] (value 1.0)>, ('Product2', 1): <gurobi.Var listing[Product2,1] (value 0.0)>, ('Product2', 2): <gurobi.Var listing[Product2,2] (value 0.0)>, ('Product2', 3): <gurobi.Var listing[Product2,3] (value 0.0)>, ('Product3', 0): <gurobi.Var listing[Product3,0] (value 1.0)>, ('Product3', 1): <gurobi.Var listing[Product3,1] (value 0.0)>, ('Product3', 2): <gurobi.Var listing[Product3,2] (value 0.0)>, ('Product3', 3): <gurobi.Var listing[Product3,3] (value 0.0)>}
<class 'gurobipy.tupledict'>
원하는 출력 : 원하는 출력은 다음과 같아야합니다 :
0 1 2 3
Product1 1.0 0.0 0.0 0.0
Product2 1.0 0.0 0.0 0.0
Product3 0.0 0.0 0.0 1.0
<class 'pandas.core.frame.DataFrame'>
내 (매우 수동) 시도 :
1) 출력 변수를 "df_listing"데이터 프레임으로 바꿨습니다 :
dict_listing = {k : v.X for k,v in var.items()}
df_listing = pd.DataFrame.from_dict(dict_listing, orient='index')
df_listing = df_listing.rename(columns = {0: 'listing'})
listing
(Product1, 0) 1.0
(Product1, 1) 0.0
(Product1, 2) 0.0
(Product1, 3) 0.0
(Product2, 0) 1.0
(Product2, 1) 0.0
(Product2, 2) 0.0
(Product2, 3) 0.0
(Product3, 0) 0.0
(Product3, 1) 0.0
(Product3, 2) 0.0
(Product3, 3) 1.0
<class 'pandas.core.frame.DataFrame'>
2) "df_listing"조옮김 :
df_listing = df_listing.transpose()
3) 열 수인 k를 사용하십시오.이 경우에는 4->0,1,2,3
입니다.df_Product1 = df_listing.iloc[:, 0*k:1*k]
df_Product1.columns = list(range(k))
df_Product2 = df_listing.iloc[:, 1*k:2*k]
df_Product2.columns = list(range(k))
df_Product3 = df_listing.iloc[:, 2*k:3*k]
df_Product3.columns = list(range(k))
4) 세 개의 데이터 프레임을 연결
input = [df_Product1, df_Product2, df_Product3]
df_facingsProductAll = pd.concat(input)
내 시도는 매우 수동 이었으므로 a) for 루프를 사용하여보다자동화 된 솔루션을 찾고 b) 입력이 될 수 있도록보다동적 코드를 가지고 있습니다 더 많은 제품, 예 : 5 개 제품
도움이되어 주셔서 감사합니다!
- 답변 # 1
- 답변 # 2
예제 데이터의 짧은 버전은 다음과 같습니다.
import pandas as pd df = pd.DataFrame({'product': [('Product 1' , 0), ('Product 1', 1) , ('Product 2', 0), ('Product 2', 1)], 'listing': [1.0, 0.0, 1.0, 0.0]}) df
그런 다음 색인 항목을 재설정하여 제품 이름을 '색인'에서 분리하십시오.
df['prod_indx'] = df['product'].apply(lambda x: x[1]) df['product'] = df['product'].apply(lambda x: x[0])
그럼 피봇
output = pd.pivot_table(df, values='listing', columns='prod_indx', index='product', aggfunc=sum) print(output)
관련 자료
- julia - Pluto Notebook의 가변 출력
- python - NetworkX의 노드 외부에 가변 크기 원 표시
- powershell 출력에서 bat 파일의 변수 값 업데이트 (동일한 bat에서 호출)
- python - 이 코드가 승자 변수를 출력하지 않는 이유는 무엇입니까?
- python - 교육 데이터와 테스트 데이터를 계정별로 분리하는 방법 (하나의 변수)
- python - 변수에서 값을 분리해야합니다
- r - 파일을 분할하고 조건으로 새 변수를 만드는 방법은 무엇입니까?
- yaml - 작동하지 않는 조건에서 출력 변수를 사용하여 종속성을 준비하는 Azure DevOps 스테이지
- html - "<"를 포함하는 XSLT 변수를 출력 할 수 없습니다
- python - NetworkX의 노드 상단에 가변 크기 원 표시
- 환경 변수에 terraform 출력 할당
- c++ - 다른 변수에 저장된 변수를 출력하는 방법
- terraform - 민감한 출력 변수의 값을 환경 변수에 어떻게 할당 할 수 있습니까?
- Python에서 목록을 분할하는 방법은 무엇입니까? (변수가 아님)
- shell - 사용자 지정 이름 및 gzip을 사용하여 스트리밍 출력에서 파일 분할
- python - 이해할 수없는 랜덤 변수 출력
- python - 출력에 사용자 입력 대신 변수가 표시되는 이유는 무엇입니까?
- javascript - discordjs v12 - 콘솔 명령 및 정의되지 않음으로 표시되는 변수 출력
- .net - C #의 정규식 분할 OSX df -h 출력
- sql server - 원하는 출력으로 시작/끝에서 분할 할 SQL 쿼리
관련 질문
- python : Pandas에서 조건을 만족하는 셀들을 하나의 셀로 결합하면서 컬럼명과 충족된 조건별로 그룹화하는 방법
- python : 열에서 많은 열로 데이터 분할 및 생성
- python : 값/중첩 np.where 알 수 없는 깊이를 기반으로 df의 여러 열을 단일 열로 통합
- python : pandas 시계열 오프셋 Business MonthBegin은 새 달에 이월되지 않습니다.
- 타임스탬프 처리 Python Panda
- python : Pandas의 첫 번째 열을 제외한 헤더를 증가시키는 방법
- python : Pandas와 함께 Glob을 사용하여 CSV 폴더를 반복하는 방법은 무엇입니까?
- python : Pandas dp가 여러 문자열로 행 삭제
- python : 큰 숫자가 PLOT Pandas에 나타나지 않도록 차단
- python : 히스토그램에 백분위수 값 표시 문제
이것으로 시도해보십시오
출력
업데이트
(Product1, 0)
와 같이 공백이있는 경우 다음과 같이 진행할 수 있습니다 :