2016-06-29 10 views
0

여기의 조각 인 다음 데이터 세트 CSV 형식으로 다음 USER_ID가 비어있을 때csv 파일의 열에 조건이 주어진 전체 데이터 행을 삭제하는 방법은 무엇입니까?

quantity revenue  time_x transaction_id user_id 
    1  0  57:57.0 0  0    0 
    1  0  18:59.0 0  1 

내가 전체 행을 삭제합니다. 어떻게 이것을 파이썬에서 할 수 있습니까? 지금까지 내 코드는 다음과 같습니다.

activity = pd.read_csv("activity(delimited).csv", delimiter=';', error_bad_lines=False, dtype=object) 
impression = pd.read_csv("impression(delimited).csv", delimiter=';', error_bad_lines=False, dtype=object) 
click = pd.read_csv("click(delimited).csv", delimiter=';', error_bad_lines=False, dtype=object) 

pre_merge = activity.merge(impression, on="user_id", how="outer") 
merged = pre_merge.merge(click, on="user_id", how="outer") 
merged.to_csv("merged.csv", index=False) 

open_merged = pd.read_csv("merged.csv", delimiter=',', error_bad_lines= False, dtype=object) 

filtered_merged = open_merged.dropna(axis='columns', how='all') 

또한 효과적인 방법으로 코드를 작성하려면 어떻게해야합니까? 팬더와

답변

2

:

import pandas as pd 

df = pd.read_csv("path/to/csv/data.csv", delimiter=';', error_bad_lines=False) 
df = df[pd.notnull(df.user_id)] # boolean indexing 

# Shift user_id to first column 
df = df.set_index("user_id") 
df = df.reset_index() 

df.to_csv("path/to/csv/data.csv", index=False) 

브래킷 표기법은 부울 값의 반복자를 제공 할 수 있습니다. 이를 boolean indexing이라고합니다. 유사한 개념과 구문이 numpy, matlab 및 R에서 사용됩니다.

+0

고맙습니다. 작동합니다. 또한 user_id 열을 첫 번째 열로 어떻게 옮길 수 있습니까? – Technologic27

+0

@ Technolohic27 편집을 참조하십시오. –

+0

@ Technolohic27 답을 수락하는 것을 고려하십시오. 감사. –

0

다른 스타일 : 데이터를 가져 와서 결합한 다음 삭제하십시오. 네임 스페이스를 깨끗하게 유지하십시오.

activity = pd.read_csv("activity(delimited).csv", delimiter=';', error_bad_lines=False) 
impression = pd.read_csv("impression(delimited).csv", delimiter=';', error_bad_lines=False) 
pre_merge = activity.merge(impression, on="user_id", how="outer") 
del activity, impression 

click  = pd.read_csv("click(delimited).csv", delimiter=';', error_bad_lines=False) 
merged  = pre_merge.merge(click, on="user_id", how="outer") 
merged.to_csv("merged.csv", index=False) 
del click 

open_merged = pd.read_csv("merged.csv", error_bad_lines= False) 

filtered_merged = open_merged.dropna(axis='columns', how='all')