pandas的常用API

pandas的常用操作方法,便于快速查找。
  • 加载数据
    df = pd.DataFrame(data)
    
  • 重命名列
    df.rename(columns={
        'a': 'new_a',
        'b': 'new_b',
        'c': 'new_c',
    }, inplace = True)
    
  • merge数据
    merged_df = pd.DataFrame([{ 'id: '1', 'd': 'd_value' }])
    df = pd.merge(df, merged_df, on=['id'], how='left')
    
  • 合并两个DataFrame
    df1 = pd.DataFrame(data1)
    df = pd.concat([df, df1], ignore_index=True)
    
  • 重新排列列
    df = df[['id', 'a', 'b', 'c', 'd']]
    
  • 添加行
  new_row = pd.Series({
      'id': '32',
      'a': 'a_value',
      'b': 'b_value',
      'c': 'c_value',
      'd': 'd_value',
  })
  df.loc[len(df)] = new_row
  • 添加列
    df['e'] = ['e1_value', 'e2_value', 'e3_value']
    
  • 用apply添加列
    def apply_callback(row):
        """为每个列添加新属性"""
        row['f'] = row['e'] + row['c']
        return row
    
    df = df.apply(apply_callback, axis=1)
    
  • 根据条件计算/添加列
    import pandas as pd
    import numpy as np
    
    raw_data = [
        { 'a': 1, 'b': 3, 'c': 4 },
        { 'a': 2, 'b': None, 'c': 5 },
        { 'a': 3, 'b': 8, 'c': None },
        { 'a': 4, 'b': None, 'c': 7 },
    ]
    df = pd.DataFrame(raw_data)
    
    
    def add(a, b, c):
        return np.where(a.isna() | b.isna() | c.isna(), '算不出来', a + b + c)
    
    
    df['sum'] = add(df.a, df.b, df.c)
    print(df)
    
  • 替换值
    df.replace([np.inf, -np.inf], np.nan, inplace=True) # 删除inf
    
  • 删除列
    df = df.drop(columns=['e', 'c'])
    
  • 删除指定条件的行
    # 这个位置不能用is True, and这种方式
    con = df['a'] == 13
    # 或
    con = df.a == 13
    # 或
    con = df.a.isna() | df.b.empty
    df = df.drop(df[con].index, axis=0)
    
  • 更新数据
    con = df['id'] == '14'
    df.loc[con, 'a'] = 95
    
  • 指定的index插入数据
    insert_value_index = 2
    insert_value_df = pd.DataFrame(value, index=[insert_value_index])
    df = pd.concat([df.loc[:insert_value_index],
                    insert_value_df,
                    df.loc[insert_value_index + 1:]],
                   ignore_index=True)
    
  • 使用符号
    import pandas as pd
    
    raw_data = [
        { 'a': 1, 'b': 1 },
        { 'a': 1, 'b': 0 },
        { 'a': 0 },
    ]
    
    df = pd.DataFrame(raw_data)
    df['OR'] = (df.a < 1) | (df.b < 1)
    df['AND'] = (df.a < 1) & (df.b < 1)
    df['NOT'] = ~(df.a < 1)
    print(df)
    
  • 排序
    # 高 -> 低
    sort1_df = df.sort_values(['a'], ascending=False)
    # 低 -> 高
    sort2_df = df.sort_values(['b'])