import numpy as np
import pandas as pd
# 產生8列6欄介於0-100的DataFrame
df = pd.DataFrame(np.random.randint(0,100,size=(8, 6)), columns=list('ABCDEF'))
for col in df.columns:
# 每欄隨機產生機率0.5的NaN
df[col] = df[col].sample(frac=0.5)
df
接下來操作一下,把每列中超過3個NaN的列刪除。
df = df.dropna(thresh=3)
df
順便記錄一下如何將字串切割成list(源自stacksoverflow),轉為欄位名稱:
# 第一種方式
exam_string = '國文英語數學自然社會公民'
n = 2
exams = [exam_string[i:i+n] for i in range(0, len(exam_string), n)]
df.columns = exams
# 第二種方式
from textwrap import wrap
exam_string = '國文英語數學自然社會公民'
exams = wrap(exam_string, 2)
df.columns = exams
# 第三種方式
exam_string = '國文英語數學自然社會公民'
exams = []
while exam_string:
exams.append(exam_string[:2])
exam_string = exam_string[2:]
df.columns = exams
df