科普:python的pandas包中的DataFrame就是二维表

张开发
2026/4/16 1:07:15 15 分钟阅读

分享文章

科普:python的pandas包中的DataFrame就是二维表
一、DataFrame 本质 带表头 行号的二维表pandas 的 DataFrame 就是一个二维表**它自带的所有属性都是为了描述这个二维表的行、列、值、形状、类型……**df.columns列名 / 表头 ↓ ↓ card_id amount ← 列名 ┌───────┬────────┐ row 0 │ user1 │ 10 │ ← df.values[0] row 1 │ user1 │ 20 │ ← df.values[1] row 2 │ user2 │ 50 │ ← df.values[2] └───────┴────────┘ ↑ df.index行索引 / 行号①df.index行索引最左边那列0 1 2②df.columns列名最上面那行[card_id, amount]③df.values纯数据去掉行号、表头[ [user1, 10], [user1, 20], [user2, 50] ]④df.shape几行几列(3, 2) → 3行2列⑤df.size总单元格数量3 × 2 6⑥df.dtypes每一列的数据类型card_id object amount int64DataFrame index行 columns列 values数据行index列columns数据values二、pandas 索引器假设我们有一张表长这样行索引(index)card_idamountcity0user110北京1user120上海2user250广州1.df[‘列名’]→取列对应二维表取出某一列/几列竖条# 取出 amount 这一列df[amount]结果0 10 1 20 2 50 Name: amount, dtype: int642.df.loc[‘行标签’]→按标签取行/列# 1. 取行取 index0 那一行df.loc[0]# 2. 取单元格取第0行、city列的值df.loc[0,city]结果北京3.df.iloc[行号]→按位置取行/列# 1. 取行取第0行第1个位置的行df.iloc[0]# 2. 取单元格取第0行、第2列的值索引列不计列数df.iloc[0,2]结果北京4.df.at[‘行标签’, ‘列名’]→快速取单个值最快# 直接定位行标签是0列名是 citydf.at[0,city]结果北京“一题多解”的对比取 user1 的第一笔金额方法代码结果评价locdf.loc[0, amount]10最推荐可读性好ilocdf.iloc[0, 1]10精准知道列在第几个位置atdf.at[0, amount]10最快只取一个值三、举例df.columnscols[:1][co_histforcoincols[1:]]功能对列名重新命名给列名批量加后缀_hist但第一列card_id保持不变拆解成 3 步看①cols[:1]保留第一列名不变[card_id]②cols[1:]从第二列开始到最后的所有列[A, B, C]③[co _hist for co in cols[1:]]给后面每一列都加上 _hist[A_hist, B_hist, C_hist]④ 拼起来[card_id] [A_hist, B_hist, C_hist] → [card_id, A_hist, B_hist, C_hist]

更多文章