python dataframe选择满足某条件的行,进行操作

import pandas as pd
data = {'state':['Ohio','Ohio','Merry','Nevaio','Nevada'],
    'year':[2000,2001,2002,2001,2002],
    'pop':[1.5,1.7,3.6,2.4,2.9]
}
frame = pd.DataFrame(data,columns=['year','state','pop','debt'],index=['one','two','three','four','five'])
frame

 

数据如上图所示,现找出state中'state'列中含有字符'io'的行,将其的debt列赋值为'aa',实现代码如下:

frame.ix[frame['state'].str.contains('io'),['debt']] = 'aa'
frame

现找出state中'state'列中等于‘Ohio’行,将其的debt列赋值为'aa',frame还是开头定义的,实现代码如下:

frame.ix[frame['state']=='Ohio',['debt']] = 'aa'
frame

多个选择条件时,用(‘&’、‘|’),如现找出state中'state'列中等于‘Ohio’行或者‘Merry’的行,用'|',将其的debt列赋值为'aa',实现代码如下:

frame.ix[(frame['state']=='Ohio')|(frame['state']=='Merry'),['debt']] = 'aa'
frame

要在 Pandas 中选取 DataFrame 的某一并将其转换为一个新的 DataFrame,可以通过 `.loc[]` 或者 `.iloc[]` 方法完成。这两种方法都可以用于按标签或位置索引来选择。 以下是具体的操作方式: ### 使用 `loc[]` 方法 如果知道目标的索引标签,则可以使用 `.loc[]` 来获取该,并通过重新构建 DataFrame 将其作为新对象返回。 ```python import pandas as pd # 创建示例 DataFrame data = {'A': [1, 2, 3], 'B': [4, 5, 6]} df = pd.DataFrame(data, index=['row1', 'row2', 'row3']) # 提取指定(例如 row2) selected_row_df = pd.DataFrame([df.loc['row2']]) print(selected_row_df) ``` 上述代码会将 `'row2'` 转换为一个新的单 DataFrame[^1]。 --- ### 使用 `iloc[]` 方法 当不知道具体的索引名称而只知道它的整数位置时,可以用 `.iloc[]` 进定位。假设要提取第 n 的数据: ```python # 提取第二 (index=1),并转成 DataFrame 类型 selected_row_df = pd.DataFrame([df.iloc[1]]) print(selected_row_df) ``` 这里 `[df.iloc[1]]` 是为了确保结果是一个列表形式传递给 `pd.DataFrame()` 构造器,从而保留原始列结构[^2]。 --- ### 结果验证 无论是采用基于标签还是基于位置的方式,最终得到的结果都应满足以下条件: - 返回的对象仍然是一个 DataFrame; - 它只包含所选的那一数据及其所有列。 注意:如果不加额外处理直接调用像 `df.loc[label]` 或 `df.iloc[index]` ,它们默认返回的是 Series 对象而不是 DataFrame 。因此需要显式地封装一层以便维持期望的数据格式[^3]。 --- #### 示例完整代码展示 下面给出完整的例子来说明这一过程: ```python import pandas as pd # 初始化测试用 DataFrame data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago'] } df = pd.DataFrame(data) # 显示原表 print("Original DataFrame:") print(df) # 把第三变为新的 DataFrame ('Charlie') new_df = pd.DataFrame([df.iloc[2]]) print("\nExtracted Row as New DataFrame:") print(new_df) ``` 运此程序后可以看到清晰的区别——原本属于 Charlie 那条记录被单独拿出来形成了独立表格[^4]。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值