欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

pandas的Dataframe选取插入删除操作

程序员文章站 2022-04-01 20:48:29
数据 from pandas import DataFrame, Series import pandas as pd import numpy as np contries...
数据
from pandas import DataFrame, Series
import pandas as pd
import numpy as np

contries = {
    '俄罗斯': {'2013': 10, '2014': 20, '2015': 30},
    '阿富汗': {'2013': 12, '2014': 25, '2015': 33},
    '新加坡': {'2013': 11, '2014': 22, '2015': 38},
    '柬埔寨': {'2013': 18, '2014': 16, '2015': 27},
}

d1 = DataFrame(contries)
d1

----------

        俄罗斯 新加坡 柬埔寨 阿富汗
2013     10     11   18    12
2014     20     22   16    25
2015     30     38   27    33
获取元素 获取一列或者多列数组
d1['柬埔寨']
d1[ ['俄罗斯', '新加坡', '柬埔寨']  ]
d1.iloc[:, 1: 3]
获取一行或者多行数据
d1.loc['2013']
d1.loc[ ['2013', '2014'] ]
d1.loc[ ['2013', '2014'], ['俄罗斯', '新加坡'] ]
获取行数据, loc里面可以放字符串标签和布尔值、数组
d1.loc[d1.新加坡 > 11]
d1.loc[d1.新加坡 > 11, ['俄罗斯', '新加坡']]
d1.iloc[1]
位置下标获取行数据
data_frame1.iloc[0]
切片获得区间数据,以下两种效果一样
data_frame1.iloc[1:3]
data_frame1[1:3]
数组切片索引
 data_frame1.iloc[1:3, [0, 1]]
 data_frame1.iloc[1:3, 1:]
数字和字符串混合
d1.ix[1:3, ['阿富汗', '俄罗斯']]
如果使用标签索引,用loc获取行 如果使用数字索引, 用iloc获取行 如果希望两者混合, 用ix获取行 loc iloc ix都是用获取某行、多行数据的 插入元素 插入一行
d1.loc['2016'] = 666
    d1.loc['2017'] = ['111', '222', '333', '444']
    d1.loc['2018'] = Series([1, 2, 3, 4], index=['新加坡', '俄罗斯', '柬埔寨', '阿富汗'])
    d1 = d1.append( Series([11, 22, 33, 44], index=['新加坡', '俄罗斯', '柬埔寨', '阿富汗'], name='2019') )
在指定位置插入一行
a1 = d1.iloc[:2]
a2 = d1.iloc[2:]

s1 = Series([1, 2, 3, 4], index=['新加坡', '俄罗斯', '柬埔寨', '阿富汗'], name='2020')
a1 = a1.append(s1)
合并两个DataFrame
d1 = pd.concat([a1, a2])
插入一列数据
d1['法兰西'] = Series(np.arange(8), index=[ str(val) for val in range(2013, 2021)])

d1.insert(2, '马来西亚',Series(np.random.randint(0, 8, 8), index=[str(x) for x in range(2013, 2021)]))
删除元素
 del pop 删除一列数组
 drop 删除一行或者多行 一列或者多列数据
del pop
del d1['马来西亚']
d1.pop('阿富汗')
drop
d1.drop('法兰西', axis=1)
d1 = d1.drop('2013', axis=1)

删除多行数据
d1.drop(['2013', '2019'], axis=0)