在到目前为止的示例中,行名/列名是字符串,但是当行名/列名是整数值时要小心。
以下面的pandas.DataFrame为例。
df = pd.DataFrame([[0, 10, 20], [30, 40, 50], [60, 70, 80]],
index=[2, 0, 1], columns=[1, 2, 0])
print(df)
在[标量值]和[列表]的情况下,指定的值被视为列名。
print(df[0])
print(df[[0, 2]])
对于“切片”,将指定的值视为行号,而不是行名。负值也可以使用。 打印(df [:2])
print(df[:2])
print(df[-2:])
使用loc(行名)iloc(行号)来明确指定它是行名还是行号。
print(df.loc[:2])
print(df.iloc[:2])
s = df[2]
print(s)
pandas.Series认为指定的值是标签名称而不是数字。
print(s[0])
使用at和iat可以清楚地指定标签名称或编号。 loc和iloc很好,但是at和iat更快。
print(s.at[0])
print(s.iat[0])
特别要注意的是,如果尝试获取最后一个值并尝试获取[-1],它将被视为对名为-1的标签的值的选择。确定,如果您使用iat。
print(s.iat[-1])
这样,当行名和列名是整数值时,最好使用at,iat,loc和iloc以避免混淆。
28_Pandas通过index选择并获取行和列通过指定pandas.DataFrame和pandas.Series的index(下标),可以选择和获取行/列或元素的值。根据[]中指定的值的类型,可以获取的数据会有所不同。将描述以下内容。获取pandas.DataFrame的列列名称:将单个列作为pandas.Series获得列名称的列表:将单个或多个列作为pandas.DataFrame获得获取pandas.DataFrame的行行名・行号的切片:将单行或多行作为pandas.Da
二、提取索引
(已经做了一些操作将Age为NaN的行提取出来并合并为一个dataframe,这里提取的是该dataframe的索引,道理和操作是相似的,提取的代码没有贴上去是为了不显得太繁杂让读者看着繁琐)
>>> index = unknown_age_Mr.index.tolist() #记得转换为list格式
三、提取索引对应的原始dataframe的行
使用iloc函数将数据块提取出
>>> age_df.iloc[index, :] # 这里的 :可以改为具体的索引,就可以提取具体列,详情可以看iloc的介绍
如果打印出来就是下面的样子
df[: 5] # 输入index,按行取值(0~4),同列表切片
df["date"] # 按列取值
df[df["date"] > "2020-01-01"] # 传入bool值,进行简单数据选择
2、df.loc[行标签, 列标签]
主要基于标签,但也可以与布尔数组一起使用。
单个标签。(注意,数字5被解释为标签)
列表或标签数组。['a', 'b', 'c']
带标签的切片对象'a':'f'(注意,不同于Python列表,切片包括端点'a','f')
if df.iloc[i]['BoolCol']== True:
print i,df.iloc[i]['BoolCol']
这虽然可行,但不是标准的 Pandas 方式。经过一番研究,我目前正在使用这个代码:
df[df['BoolCol'] == True].index.tolist()
这个给了我一个索引列表,但跟我想要的不匹配,当检查:
df.iloc[i]
train=train['item_id']#选择要去重的列
train=set(train)#去重
data=pd.DataFrame(list(train),columns=['item_id'])#因为set是无序的,必须要经过list处理后才能成为DataFrame
data.to_csv('xxx.csv',index=False)#保存表格
记得导入pandas哦~
以上这篇pandas 实现将重复表格去重,并重新转换为表格的方法就是小编分享给大家
Pandas库十分强大,但是对于切片操作iloc, loc和ix,很多人对此十分迷惑,因此本篇博客利用例子来说明这3者之一的区别和联系,尤其是iloc和loc。
对于ix,由于其操作有些复杂,我在另外一篇博客专门详细介绍ix。
首先,介绍这三种方法的概述:
loc gets rows (or columns) with particular labels from the index. loc从索引中获取具有特定标签的行(或列)。这里的关键是:标签。标签的理解就是name名字。
iloc gets rows (or columns) at particular positions in
使用
pandas索引和
选择数据时,总是需要百度,因此决定对
pandas.DataFrame中的
索引和
选择方法做个总结。所用的
pandas版本号为0.20.1
pandas中有三种
索引方法:.loc,.iloc和[],注意:.ix的用法在0.20.0中已经不建议使用了!
在pandas中怎么样实现类似mysql查找语句的功能:select * from table where column_name = some_value;pandas中获取数据的有以下几种方法:布尔索引 位置索引 标签索引 使用API 假设数据如下:import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar ...
Pandas可以通过read_csv()方法从CSV文件中读取数据,并将其作为DataFrame对象返回。在这个DataFrame对象中,每个行会有一个index,它通常是由Pandas自动生成的一组数字。但是,如果CSV文件中已经有一个列作为标识符可以作为index的话,我们也可以将其指定为index。
如果在读取CSV文件时想要有一个特定的列作为index的话,可以使用index_col参数来指定。例如,下面的代码使用index_col参数将第一列作为index:
```python
import pandas as pd
df = pd.read_csv('data.csv', index_col=0)
以上代码会将data.csv文件读取为一个DataFrame对象,并将其中的第一列作为index。如果要读取CSV文件的时候不想要将任何列作为index,可以将index_col设置为None。
在DataFrame对象中,index可以让我们快速地根据行的标识符找到某一行的数据,或根据一些具体要求筛选数据。例如,可以使用loc方法按照index选择某些行的数据:
```python
df.loc['row1':'row3']
以上代码会选择index为row1到row3的行数据。这样,通过设置合适的index,我们可以更方便地操作和分析数据。