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'])