1 2 3 4 5 6 7 8 9 10 11 | 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的列刪除。
1 2 | df = df.dropna(thresh = 3 ) df |

順便記錄一下如何將字串切割成list(源自stacksoverflow),轉為欄位名稱:
1 2 3 4 5 | # 第一種方式 exam_string = '國文英語數學自然社會公民' n = 2 exams = [exam_string[i:i + n] for i in range ( 0 , len (exam_string), n)] df.columns = exams |
1 2 3 4 5 6 | # 第二種方式 from textwrap import wrap exam_string = '國文英語數學自然社會公民' exams = wrap(exam_string, 2 ) df.columns = exams |
1 2 3 4 5 6 7 8 9 | # 第三種方式 exam_string = '國文英語數學自然社會公民' exams = [] while exam_string: exams.append(exam_string[: 2 ]) exam_string = exam_string[ 2 :] df.columns = exams df |
