가정 된 데이터 세트,
df1
num1 num2
27 1
973 3
1410 3
724 1
346 5
df2
a1 a2 c1 c2
27.0 1 red apple
131.0 1 blue banana
2124.0 3 green apple
1345.0 1 red orange
346.0 5 blue grape
num1-a1 & num2-a2를 비교하고 싶습니다. 두 조건이 같으면 c1과 c2의 값을 목록에 추가하고 싶습니다. (시작이 빈 목록이라고 가정)
질환
보시다시피 num1-a1, num2 & a2의 모양이 다릅니다.
목록에 추가 된 값만 'c1'및 'c2'입니다.
(num1, num2, a1, a2는 비교 및 일치에 사용됩니다)
순서가 뒤죽박죽이고 데이터 프레임의 크기가 다릅니다. (다른 컬럼 길이)
내가 원하는 출력
위의 예에서는 2 개 일치 (27-1, 346-5)이므로
mylist = [red, apple, blue, grape]
어떻게 할 수 있습니까?
읽어 주셔서 감사합니다.
Series.str.zfill
와 일치 를 DataFrame.assign
위해 추가 0
에 사용 하고 df2
, DataFrame.merge
기본 결합과 함께 사용 DataFrame.stack
하고 , 마지막으로 사용 Series
하고 목록으로 변환합니다.
mylist = (df1.assign(num1 = df1['num1'].astype(str).str.zfill(4),
num2 = df1['num2'].astype(str).str.zfill(3))
.merge(df2, left_on=['num1','num2'], right_on=['a1','a2'])[['c1','c2']]
.stack()
.tolist())
print (mylist)
['green', 'apple', 'orange', 'melon',
'blue', 'banana', 'purple', 'peach']
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다