다음과 같은 데이터가있는 json 배열이 있습니다.
[{
'Id': 2837
'Date': datetime.date(2020, 01, 01),
'Caption': 'asdf'
}, {
'Id': 2838
'Date': datetime.date(2020, 01, 01),
'Caption': 'fasd'
},{
'Id': 2839
'Date': datetime.date(2020, 01, 04),
'Caption': 'sdfa'
}]
및 각 날짜에 대한 행이있는 데이터 프레임
DATE LEN
0 2020-01-01 NaN
1 2020-01-02 NaN
2 2020-01-03 NaN
3 2020-01-04 NaN
4 2020-01-05 NaN
5 2020-01-06 NaN
이제 json 배열의 요소를 계산하고 데이터 프레임에 쓰고 싶습니다. 나는 시도했다
df['LEN'] = len([x for x in jsonArray if x['Date'] == df['DATE']])
하지만 작동하지 않습니다. 오류가 발생합니다ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
내가 도대체 뭘 잘못하고있는 겁니까?
# necessary imports
import datetime
import pandas as pd
이 목록이 있다고 가정 해 보겠습니다.
ourlist = \
[{
'Id': 2837,
'Date': datetime.date(2020, 1, 1),
'Caption': 'asdf'
},{
'Id': 2838,
'Date': datetime.date(2020, 1, 1),
'Caption': 'fasd'
},{
'Id': 2839,
'Date': datetime.date(2020, 1, 4),
'Caption': 'sdfa'
}]
및 데이터 프레임, 예 :
df = pd.DataFrame([datetime.datetime(2020,1,1),
datetime.datetime(2020,1,2),
datetime.datetime(2020,1,3),
datetime.datetime(2020,1,4)],
columns=['DATE'])
그런 다음 다음을 수행 할 수 있습니다.
df['LEN'] = df['DATE'].apply(lambda datetimeobject: sum(datetimeobject == dates for dates in [eachdict['Date'] for eachdict in ourlist]))
또는보다 간결하게 목록 항목의 발생 횟수 를 어떻게 계산할 수 있습니까? :
df['LEN'] = df['DATE'].apply(lambda datetimeobject: [eachdict['Date'] for eachdict in ourlist].count(datetimeobject))
(두 경우 모두 사전 목록 인 에서 Date
항목 을 가져 오기 위해 목록 이해 를 사용하고 ourlist
있습니다.)
둘 다 결과는 다음과 df
같습니다.
DATE LEN
0 2020-01-01 2
1 2020-01-02 0
2 2020-01-03 0
3 2020-01-04 1
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다