두 번째 엑셀 파일 팬더의 데이터를 기반으로 첫 번째 엑셀에서 엑셀 행을 제거하는 방법

크리스티나

주소, 학교 이름, 교장 이름 등과 같은 학교 데이터가 포함 된 한 가지 유형의 엑셀 파일이 있습니다. 그리고 주소, 학교 이름, 등급, 전화 번호 등이 포함 된 두 번째 유형의 엑셀 파일이 있습니다. 질문은 : 어떻게 삭제할 수 있습니까? 두 번째 주소를 기반으로 첫 번째 Excel 파일의 특정 행?

첫 번째 엑셀 파일 :

      Unnamed: 0  School                                         Address
0              0  Alabama School For Deaf           205 E South Street, Talladega, AL 35160
1              1  Helen Keller School               1101 Fort Lashley Avenue, Talladega, AL 35160
2              2  Tutwiler Prison                   1209 Fort Lashley Ave., Talladega, AL 35160
3              3  Alabama School Of Fine Arts       8966 Us Hwy 231 N, Wetumpka, AL 36092

둘째:

                             School_Name  ...     Address
0                       Pine View School  ...     0 Mp 1361 Ak Hwy, Dot Lake, AK 99737
1       A.D. Henderson University School  ...     1 168 3Rd Avenue, Eagle, AK 99738
2    School For Advanced Studies - South  ...     2 249 Jon Summar Way, Tok, AK 99780
3    Tutwiler                                     3 1209 Fort Lashley Ave., Talladega, AL 35160

출력은 다음과 같아야합니다.

      Unnamed: 0  School                                         Address
0              0  Alabama School For Deaf           205 E South Street, Talladega, AL 35160
1              1  Helen Keller School               1101 Fort Lashley Avenue, Talladega, AL 35160
3              3  Alabama School Of Fine Arts       8966 Us Hwy 231 N, Wetumpka, AL 36092

for loop, pandas를 사용해 보았습니다.

import pandas as pd
from pandas import ExcelWriter

writer = pd.ExcelWriter('US1234.xlsx', engine='xlsxwriter')
data = []
data_schools = []
df = pd.read_excel('DZ13288pubprin.xlsx')
lists = [[] for i in range(2)]

states = ['AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY',
          'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH',
          'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY']
print(len(states))


def checking_top_100(nameofschool):
    for i in states:
        df2 = pd.read_excel('TOP-100.xlsx', sheet_name=[i])
        for a in df2[i]['SchoolName']:
            if nameofschool in a:
                pass
            else:
                return nameofschool


def sort_by_value(state, index):
    for i in range(len(df.SchoolName)):
        if df.LocationState[i] == state:
            # print(df.SchoolName[i])
            school_name = checking_top_100(df.SchoolName[i])
            lists[index].append(school_name)
            lists[index].append(
                df.LocationAddress[i] + ', ' + df.LocationCity[i] + ', ' + df.LocationState[i] + ' ' + df.LocationZip[
                    i])
            # lists[index].append(df.EmailAddress[i])
    print(lists[index][0::2])


def data_to_excel(state, index):
    dfi = pd.DataFrame({
        'SchoolName': lists[index][0::2],
        # 'Principal Name': lists[index][1::3],
        # 'Email Address': lists[index][2::3],
        'Address': lists[index][1::2]

    })
    dfi.to_excel(writer, sheet_name=state)


# checking_top_100()
for i in range(len(states)):
    sort_by_value(states[i], i)
    data_to_excel(states[i], i)

writer.save()
RDoc

pandas.DataFrame.isin ( https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isin.html )을 살펴 보시기 바랍니다 . 두 번째 데이터 프레임에서 주소가 있는지 여부에 따라 부울 배열 (True 또는 False)을 반환하므로 부울 인덱싱을 사용하여 주소를 찾을 수없는 데이터의 하위 집합을 필터링 할 수 있습니다.

즉, 다음과 같이 할 수 있습니다.

dataframe1[dataframe1.Address.isin(dataframe2.Address) == False]

원하는 결과를 얻을 수 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관