팬더가 병합하여 데이터 프레임에서 두 개의 열을 가져오고 열에 대한 작업을 수행합니다.

Shubham R

팬더 데이터 프레임 df에 테이블이 있습니다.

Leafid  pidx  pidy  value
  100     1     3      10
  100     2     6      12
  200     5     7      48
  300     7     1      11

나는 다른 데이터 프레임 df2가 있습니다.

pid  price
1      10
2      20
3      30
4      40
5      50
6      60
7      70

두 개의 열이 더 있도록 df와 df2를 병합하고 싶습니다. price_pidx and price_pidy

그리고 나눗셈을합니다. price_pidy/price_pidx

예를 들면 :

Leafid pidx pidy value price_pidx price_pidy price_pidy/price_pidx

 `100    1      3     10            10           30             3`

내 최종 df에는 열이 있어야합니다.

pidx   pidy   value   price_pidx/price_pidy

나는 .map()이것을 사용하고 싶지 않습니다 . 사용하는 방법이 pd.merge있습니까?

하나의 컬럼을 가져 오는 방법을 알고 price_pidx있지만 둘 다 가져 오는 방법은 무엇입니까?

예를 들어.

pd.merge(df,df2['pid','price'],how = left, left_on = 'pidx' right_on = 'pid')

하지만 price_pidx와 price_pidy를 모두 가져 오는 방법

이스 르엘

없이 map이 복잡, 필요의 모양 변경하기 때문에 의하여 melt다음, merge마지막 unstack:

df = pd.melt(df, id_vars='value', value_name='pid', var_name='g')
df2 = pd.merge(df,df2[['pid','price']], how='left', on = 'pid')
df2 = df2.set_index(['value','g']).unstack()
df2.columns = ['_'.join(col) for col in df2.columns]
df2['col'] = df2.price_pidy / df2.price_pidx
df2 = df2.rename(columns={'pid_pidx':'pidx','pid_pidy':'pidy'})
print (df2)
       pidx  pidy  price_pidx  price_pidy       col
value                                              
10        1     3          10          30  3.000000
11        7     1          70          10  0.142857
12        2     6          20          60  3.000000
48        5     7          50          70  1.400000

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관