索引
索引列
data['列名']
data.列名
使用单层方括号 df[‘列名’]:返回 Series
使用双层方括号 df[[‘列名’]]:返回 DataFrame
操作 返回类型 典型用途
df[‘Customers’] Series 单列计算(如 df[‘列名’].mean())
df[[‘Customers’]] DataFrame 保留表格结构(如导出、合并列)
series转化为df
# 方法1:双层方括号
df_single_column = df[['Customers']]
# 方法2:Series.to_frame()
series_to_df = df['Customers'].to_frame()
是
索引行
loc函数基于行标签和列标签进行索引
iloc函数基于行位置和列位置进行索引
data.iloc[i]
data.iloc[i,'列名':‘列名’]
data.iloc[i,[列名',‘列名’]]
组合条件逻辑运算
(data.列名>=0) & (data.列名>=0)
返回series,data.iloc[series]
一张表中不存在另一张表中的值
1
在 Pandas 中:isin(values) 用于基于其值是否在给定集合 values 中来过滤和选择行。
~ 表示逻辑非。
因此,可以通过~isin(values) 来选择它们的值不存在于 values 中的行。
df = customers[~customers['id'].isin(orders['customerId'])]
2
思路是基于共同的客户 ID(在 customers 表中的 id 列和 orders 表中的 customerId 列),将表 customers 与表 orders 进行连接。
通过进行左连接,并选择 customerId 为 null 的记录,我们可以确定哪些客户没有下过订单。
df = customers.merge(orders, left_on='id', right_on='customerId', how='left')
Customers table:
+----+-------+
| id | name |
+----+-------+
| 1 | Joe |
| 2 | Henry |
| 3 | Sam |
| 4 | Max |
+----+-------+
Orders table:
+----+------------+
| id | customerId |
+----+------------+
| 1 | 3 |
| 2 | 1 |
+----+------------+
id name id customerId
1 Joe 2 1
2 Henry null null
3 Sam 1 3
4 Max null null
loc,iloc列索引是否加[]
如果需要 DataFrame 结构(例如后续操作需要列名或二维特性),用 [‘product_id’]。
如果需要 直接取值或一维数据,用 ‘product_id’。
特性 products.loc[ind, [‘product_id’]] products.loc[ind, ‘product_id’]
列索引类型 列表(即使只有一个列名) 单个字符串
返回类型(多行) DataFrame(二维) Series(一维)
返回类型(单行) Series(一维) 标量值(如 str/int)
保留列名 是 是(Series 的 name 属性)
典型使用场景 需要保持 DataFrame 结构时(如后续合并) 直接操作值或传递给需要 Series 的函数
更改列名
df = df.rename(columns={'new':'old'}) # 保存修改后的结果
df.rename(columns={'new':'old'}, inplace=True) # 直接修改原DataFrame