반응형
    
    
    
  두 개의 데이터 프레임이 있는데 둘 다  주문 ID 와  날짜 가 있습니다.
첫 번째 데이터 프레임  df1 에 플래그를 추가하고 싶었습니다. 동일한  order id  및  date 를 가진 레코드가  df2 데이터 프레임에있는 경우  그런 다음  Y 를 추가하십시오.
[ df1['R'] = np.where(orders['key'].isin(df2['key']), 'Y', 0)]
이를 수행하기 위해  order_id 와  date 를 연결하는 키를 만들려고했지만 다음 코드를 시도 할 때 :
df1['key']=df1['Order_ID']+'_'+df1['Date']
이 오류가 발생합니다.
ufunc 'add' did not contain a loop with signature matching types dtype('S21') dtype('S21') dtype('S21')
df1은 다음과 같습니다.
Date | Order_ID | other data points ... 
201751 4395674  ...
201762 3487535  ...
다음은 데이터 유형입니다.
df1.info()
RangeIndex: 157443 entries, 0 to 157442
Data columns (total 6 columns):
Order_ID                                 157429 non-null object
Date                                     157443 non-null int64
...
dtypes: float64(2), int64(2), object(2)
memory usage: 7.2+ MB
df1['Order_ID'].values
array(['782833030', '782834969', '782836416', ..., '783678018',
       '783679806', '783679874'], dtype=object)
해결 방법
문제는 객체 배열 (문자열 포함)을 숫자 배열에 추가 할 수 없다는 것입니다.
>>> import pandas as pd
>>> pd.Series(['abc', 'def']) + pd.Series([1, 2])
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U21') dtype('<U21') dtype('<U21')
 Dates 를  str 로 명시 적으로 변환해야합니다.
pandas에서 효율적으로 수행하는 방법을 모르지만 다음을 사용할 수 있습니다.
df1['key'] = df1['Order_ID'] + '_' + df1['Date'].apply(str)  # .apply(str) is new
참조 페이지 https://stackoverflow.com/questions/44527956
반응형
    
    
    
  '파이썬' 카테고리의 다른 글
| 파이썬 PyTorch에서 행렬의 곱을 수행하는 방법 (0) | 2020.10.18 | 
|---|---|
| 파이썬 lib 'SQL Server 용 ODBC 드라이버 13'을 열 수 없습니까? Sym 연결 문제? (0) | 2020.10.18 | 
| 파이썬 Python의 기존 파일 앞에 줄 추가 (0) | 2020.10.18 | 
| 파이썬 Pandas 데이터 프레임에서 null 값이있는 행 제거 (0) | 2020.10.18 | 
| 파이썬 NumPy 다차원 배열의 i 번째 열에 액세스하는 방법은 무엇입니까? (0) | 2020.10.17 | 
댓글