아래는 Excel입니다.
설명 : Filter 컬럼의 값이 0보다 큰 경우 CATEGORY, SUB_CATEGORY 및 SUB_CATEGORY_2 데이터 를 삭제 해야합니다 (NAN, 0 및 음수 값을 제거해야 함).
예상 출력 :
아래는 내가 시도한 스크립트입니다.
def TEST(file):
df = pd.read_excel(file)
mask = (df['Filter'] != 0).dropna()
if mask:
df1 = df[mask]
df1['CATEGORY'] = ''
df1['SUB_CATEGORY'] = ''
df1['SUB_CATEGORY_2'] = ''
print (df1)
TEST("test.xlsx")
아래 오류가 발생합니다. ValueError : DataFrame의 진실 값이 모호합니다. a.empty, a.bool (), a.item (), a.any () 또는 a.all ()을 사용하십시오. 제발 도와주세요.
사용 DataFrame.where
:
where=df['Filter'].eq(0)| ( df['Filter'].isnull() | df['Filter'].eq('') )
cols=['CATEGORY','SUB_CATEGORY','SUB_CATEGORY_2']
df[cols]=df[cols].where(where)
다음은 예입니다.
df=pd.DataFrame({'Modules':'M1 M2 M3 M4 M5 M6 M7 8'.split(),'Filter':[1 ,3 ,6, np.nan, 0 ,np.nan ,2, 0],
'CATEGORY':[np.nan,np.nan,np.nan,'data','data','data',np.nan,'data'],
'SUB_CATEGORY':[np.nan,np.nan,np.nan,'data','data','data',np.nan,'data'],
'SUB_CATEGORY_2':[np.nan,np.nan,np.nan,'data','data','data',np.nan,'data']})
Modules Filter CATEGORY SUB_CATEGORY SUB_CATEGORY_2
0 M1 1.0 NaN NaN NaN
1 M2 3.0 NaN NaN NaN
2 M3 6.0 NaN NaN NaN
3 M4 NaN data data data
4 M5 0.0 data data data
5 M6 NaN data data data
6 M7 2.0 NaN NaN NaN
7 8 0.0 data data data
where=df['Filter'].eq(0)| ( df['Filter'].isnull() | df['Filter'].eq('') )
cols=['CATEGORY','SUB_CATEGORY','SUB_CATEGORY_2']
df[cols]=df[cols].where(where,'')
print(df)
Modules Filter CATEGORY SUB_CATEGORY SUB_CATEGORY_2
0 M1 1.0
1 M2 3.0
2 M3 6.0
3 M4 NaN data data data
4 M5 0.0 data data data
5 M6 NaN data data data
6 M7 2.0
7 8 0.0 data data data
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다