知识要点
依据索引获取数据:
列索引:df_obj[‘label’]
不连续列索引:df_obj[ [‘label1’, ‘label2’] ]
行索引,loc[ ],iloc[ ]
Inplace参数:
Pandas中的很多操作都有参数inplace,如 drop(),replace() …
默认 inplace=False,表示将操作后的结果进行返回,对原始数据不会产生影响
inplace=True,没有返回值,在原始数据上进行操作,对原始数据会产生影响
第五节 DataFrame的索引操作
In [1]:
import pandas as pd
import numpy as np
In [3]:
# 构建DataFrame
country1 = pd.Series({'Name':'中国',
'Language':'Chinese',
'Area':'9.597M km2',
'Happiness Rank': 79})
country2 = pd.Series({'Name':'美国',
'Language':'USA',
'Area':'9.83M km2',
'Happiness Rank': 14})
country3 = pd.Series({'Name':'澳大利亚',
'Language':'Austria',
'Area':'7.692M km2',
'Happiness Rank': 9})
df = pd.DataFrame([country1,country2,country3],index=['CH','US','AU'])
In [4]:
df
Out[4]:
Name | Language | Area | Happiness Rank | |
---|---|---|---|---|
CH | 中国 | Chinese | 9.597M km2 | 79 |
US | 美国 | USA | 9.83M km2 | 14 |
AU | 澳大利亚 | Austria | 7.692M km2 | 9 |
列索引
In [5]:
df['Area']
Out[5]:
CH 9.597M km2 US 9.83M km2 AU 7.692M km2 Name: Area, dtype: object
不连续索引
In [7]:
df[['Area','Name']]
Out[7]:
Area | Name | |
---|---|---|
CH | 9.597M km2 | 中国 |
US | 9.83M km2 | 美国 |
AU | 7.692M km2 | 澳大利亚 |
行索引
In [10]:
type(df.loc['CH'])
Out[10]:
pandas.core.series.Series
In [9]:
df.iloc[1]
Out[9]:
Name 美国 Language USA Area 9.83M km2 Happiness Rank 14 Name: US, dtype: object
混合索引
In [11]:
# 先行后列
print(df.loc['CH']['Area'])
print(df.iloc[0]['Area'])
9.597M km2 9.597M km2
In [12]:
# 先列后行
print(df['Area']['CH'])
print(df['Area'].loc['CH'])
print(df['Area'].iloc[0])
9.597M km2 9.597M km2 9.597M km2
inplace参数
In [13]:
df
Out[13]:
Name | Language | Area | Happiness Rank | |
---|---|---|---|---|
CH | 中国 | Chinese | 9.597M km2 | 79 |
US | 美国 | USA | 9.83M km2 | 14 |
AU | 澳大利亚 | Austria | 7.692M km2 | 9 |
In [14]:
# 删除Area列
df.drop('Area',axis=1)
Out[14]:
Name | Language | Happiness Rank | |
---|---|---|---|
CH | 中国 | Chinese | 79 |
US | 美国 | USA | 14 |
AU | 澳大利亚 | Austria | 9 |
In [15]:
# df没有影响
df
Out[15]:
Name | Language | Area | Happiness Rank | |
---|---|---|---|---|
CH | 中国 | Chinese | 9.597M km2 | 79 |
US | 美国 | USA | 9.83M km2 | 14 |
AU | 澳大利亚 | Austria | 7.692M km2 | 9 |
正确的写法
In [16]:
# 写法1:默认inplace=False,返回操作后的结果
df2 = df.drop('Area',axis=1)
df2
Out[16]:
Name | Language | Happiness Rank | |
---|---|---|---|
CH | 中国 | Chinese | 79 |
US | 美国 | USA | 14 |
AU | 澳大利亚 | Austria | 9 |
In [17]:
# 写法2:inplace=True,在员数据上产生影响,返回None
df.drop('Area',axis=1,inplace=True)
df
Out[17]:
Name | Language | Happiness Rank | |
---|---|---|---|
CH | 中国 | Chinese | 79 |
US | 美国 | USA | 14 |
AU | 澳大利亚 | Austria | 9 |
In [ ]: