1、index 操作
reset_index
,重置DataFrame的索引,并使用默认索引。如果DataFrame有一个多索引,则此方法可以删除一个或多个级别。
import pandas as pd
import numpy as np
df = pd.DataFrame([('bird', 389.0),
('bird', 24.0),
('mammal', 80.5),
('mammal', np.nan)],
index=['falcon', 'parrot', 'lion', 'monkey'],
columns=('class', 'max_speed'))
#重置索引时,会将旧索引添加为列,并使用新的顺序索引:
df.reset_index(
![b8114c3b4f2c1815f61f998728034caf.png](https://i-blog.csdnimg.cn/blog_migrate/2f0505b4be60d701c2abfcc9338562b1.png)
#我们可以使用drop参数来避免将旧索引添加为列
df.reset_index(drop=True)
![8d1f62ca29b683e33f903615930a9f02.png](https://i-blog.csdnimg.cn/blog_migrate/e059ac3efaec2f444c9019847918d896.png)
reindex
,使用可选的填充逻辑设置DataFrame新索引
index = ['Firefox', 'Chrome', 'Safari', 'IE10', 'Konqueror']
df = pd.DataFrame({'http_status': [200, 200, 404, 404, 301],
'response_time': [0.04, 0.02, 0.07, 0.08, 1.0]},
index=index)
df
![6db20bd2811765df0ce7735bdeeb0ea4.png](https://i-blog.csdnimg.cn/blog_migrate/95c3287bfad77115991a2afbdf80b9fe.png)
# 将新的列表序列作为索引
new_index = ['Safari', 'Iceweasel', 'Comodo Dragon', 'IE10',
'Chrome']
df.reindex(new_index)
![2bcda4c23c795c71d19f0ea85ae6f9ab.png](https://i-blog.csdnimg.cn/blog_migrate/3f9aa67c6e3993475eb05dd4317511ec.png)
set_index
,使用现有列设置DataFrame索引
df = pd.DataFrame({'month': [1, 4, 7, 10],
'year': [2012, 2014, 2013, 2014],
'sale': [55, 40, 84, 31]})
df
![079fd66691723455b92d63808a975d72.png](https://i-blog.csdnimg.cn/blog_migrate/22af93028d9403a32e4319b4191833ce.png)
df.set_index('month')
![6de589c9393fb12a54b9563b70c7bc8d.png](https://i-blog.csdnimg.cn/blog_migrate/64c2212cc8d83ed941aaf02f62162b03.png)
2、映射操作
map
,根据输入对应关系,输出Series映射值,该方法只能作用于Series
s = pd.Series(['cat', 'dog', np.nan, 'rabbit'])
s.map({'cat': 'kitten', 'dog': 'puppy'})
0 kitten
1 puppy
2 NaN
3 NaN
dtype: object
apply
用法与map差不多,但是其功能更加强大,Series、DataFrame都有此方法
df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
df
![450ce1764b21ce30159e0df43505ded8.png](https://i-blog.csdnimg.cn/blog_migrate/28c6dd6066f0c58028ba6d5d04e58d1d.png)
df.apply(np.sqrt)
![1883c79479b7aa6628a895a9fd410b8b.png](https://i-blog.csdnimg.cn/blog_migrate/49c6abb8c156d5619eb6759e92abf176.png)
applymap
,将函数应用于数据框的每个元素
df = pd.DataFrame([[1, 2.12], [3.356, 4.567]])
df
![67f47dd503adb32868adc395f62576fe.png](https://i-blog.csdnimg.cn/blog_migrate/b711921c50da02507deb280d23224752.png)
df.applymap(lambda x: len(str(x)))
![29a1d36cfd3f877b99fac6f8f624872f.png](https://i-blog.csdnimg.cn/blog_migrate/f2cf9d5ebb93624870fdf39bee88ea06.png)
3、索引
iloc
,主要是基于整数位置的(从轴的0到长度1)索引,但也可以与布尔数组一起使用。
mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
{'a': 100, 'b': 200, 'c': 300, 'd': 400},
{'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
df = pd.DataFrame(mydict)
df
![9258085a606ff8ab3a651ef1bf29bde5.png](https://i-blog.csdnimg.cn/blog_migrate/2d658e6dbf1da1f5f1ee35d0a71298aa.png)
df.iloc[0, 1]
2
df.iloc[lambda x: x.index % 2 == 0]
![b16419eb87d48332b3c090f4f48c3779.png](https://i-blog.csdnimg.cn/blog_migrate/a8bdfc1410d76d84a7741117848c1464.png)
loc
,主要基于标签的索引,但也可以与布尔数组一起使用
df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
index=['cobra', 'viper', 'sidewinder'],
columns=['max_speed', 'shield'])
df
![cce490a27eb570d5aebc25a5a6f1d4ed.png](https://i-blog.csdnimg.cn/blog_migrate/27d8eb045a0f2d28596d6ede72ae2ba0.png)
df.loc['cobra', 'shield']
2
df.loc[lambda df: df['shield'] == 8]
![16c087c43f76fe8e672c2cae9c40e4f7.png](https://i-blog.csdnimg.cn/blog_migrate/8a90b483d08b3b51ce7e38715eedee43.png)
4、迭代
iterrows()
,将DataFrame迭代为(insex, Series)
df = pd.DataFrame([[1, 1.5]], columns=['int', 'float'])
df
![c4700c2c5483871baeff82932b576581.png](https://i-blog.csdnimg.cn/blog_migrate/a5865ae2bc55b4ba8b3e5cf65cd98ec5.png)
for index,col in df.iterrows():
print(index)
0
#对于每一行可以通过列名访问对应的元素
for index,col in df.iterrows():
print(col['int'],col['float'])
1.0 1.5
iteritems()
,将DataFrame迭代为(列名, Series)对
df = pd.DataFrame({'species': ['bear', 'bear', 'marsupial'],
'population': [1864, 22000, 80000]},
index=['panda', 'polar', 'koala'])
df
![0814ba0d07d691d05b2a1165f48810fa.png](https://i-blog.csdnimg.cn/blog_migrate/e68c9d9c646d6acf4e110d919314f75d.png)
for label, content in df.iteritems():
print(label)
species
population
for label, content in df.iteritems():
print(content[0],content[1],content[2])
bear bear marsupial
1864 22000 80000
itertuples()
,将DataFrame迭代为元组
df = pd.DataFrame({'species': ['bear', 'bear', 'marsupial'],
'population': [1864, 22000, 80000]},
index=['panda', 'polar', 'koala'])
df
![c26e3840f57dc4c3ff18463b54c6cc3f.png](https://i-blog.csdnimg.cn/blog_migrate/ae2356f21c7416a78b96104e9c06df54.png)
for row in df.itertuples(index=True):
print(row)
Pandas(Index='panda', species='bear', population=1864)
Pandas(Index='polar', species='bear', population=22000)
Pandas(Index='koala', species='marsupial', population=80000)
for row in df.itertuples(index=True):
print(row[0:3])
('panda', 'bear', 1864)
('polar', 'bear', 22000)
('koala', 'marsupial', 80000)
getattr(row, 'species')
'marsupial'本文参考:官方文档
pandas documentationpandas.pydata.org