本文共 1782 字,大约阅读时间需要 5 分钟。
DataFrame 操作起来就像是一个带索引的字典。通过括号操作符可以快速提取、设置或删除列。例如:
df['one'] # 提取列 'one'df['three'] = df['one'] * df['two'] # 设置新列 'three'df.drop('two') # 删除列 'two' 删除操作可以使用 del 或 pop 方法:
del df['two'] # 删除列 'two'three = df.pop('three') # 返回并删除列 'three' 还可以通过赋值来添加新列,甚至使用多线程的广播机制添加多维数组:
df.insert(1, 'bar', df['one']) # 在位置 1 插入新列 'bar'
Pandas 提供 assign() 方法,类似于 dplyr 的 mutate,用于通过现有列创建新列。例如:
iris = pd.read_csv('data/iris.data')iris = iris.assign(sepal_ratio=iris['SepalWidth'] / iris['SepalLength']) assign() 可以接收函数或直接赋值,返回新列的 DataFrame 副本:
iris = iris.query('SepalLength > 5').assign( sepal_ratio=lambda x: x['SepalWidth'] / x['SepalLength'], petal_ratio=lambda x: x['PetalWidth'] / x['PetalLength']) 支持依赖赋值(在 3.6 版及以上),可以在同一个 assign() 调用中引用之前创建的列。
df[col] 返回 Series。df.loc[label] 或 df.iloc[loc] 返回行数据。df[5:10] 返回特定行范围的 DataFrame。df[bool_vec] 根据布尔向量筛选行。df[df['A'] > 10 & df['B'] < 5]。Pandas 会自动对齐列和索引进行运算。例如:
df1 + df2 # 按列和索引对齐进行加法df - 5 # 对 DataFrame 和常数 5 进行减法df * 4 # 对 DataFrame 乘以标量 4df | df2 # 布尔运算df ^ df2 # 异或运算df / 0 # 对零除法
默认行为是按行和列的标签进行对齐,适用于标量和其他 DataFrame。
通过 T 属性或 transpose() 方法可以将 DataFrame 转置:
df = pd.DataFrame(np.random.randn(3, 4))df.head().T # 转置后的 DataFrame
Pandas Series 和 DataFrame 支持直接使用 NumPy ufunc。例如:
np.exp(df) # 对 DataFrame 的每一列应用指数函数np.remainder(df1, df2) # 对多个 Series 进行运算
Pandas 会自动对齐输入数据,处理缺失值和标签。
使用 info() 查看数据摘要,to_string() 转换为字符串表格:
print(df.info()) # 查看数据摘要df.to_string() # 显示 DataFrame 作为字符串
通过设置 display.width 和 display.max_colwidth 调整列宽度。
DataFrame 的列可以像属性访问一样访问:
df.foo1 # 访问列 'foo1'
IPython 提供代码补全功能,按 Tab 键可查看可能的代码。
以上操作涵盖了 Pandas DataFrame 的基础操作,适合日常数据处理和分析。
转载地址:http://cvvfk.baihongyu.com/