Pandas DataFrame创建、增、删、改、查、并操作合集

本文代码在python 3.9.7,pandas 1.3.4下编译通过


一、Pandas DataFrame的创建

创建DataFrame即由获取的原数据类型(或数据文件)转为DataFrame,情况1是数据已在程序中以列表、字典或Numpy数组存储,情况2是数据在.xlsx文件或.csv文件中存储。

1. 基于列表、字典或Numpy数组创建DataFrame

列表示例:

import pandas as pd
import numpy as np
data = [['Marvin',10],['Leo',12],['Teresa',13]]
df_list = pd.DataFrame(data,columns=['Name','Age'])

字典示例:

df_dict=pd.DataFrame({'Value1':['A','B','C','D'],'Value2':['aaa','bbb','ccc','ddd']})

Numpy数组示例:

df_numpy = pd.DataFrame(np.ones((4, 4))*1, columns=list('DCBA'), index=list('4321'))

2. 基于.xlsx文件或.csv文件读取Dataframe

xlsx文件示例:

dataFormat=['Class','Name','Sex']
datafileStr=r'F:\abc\123.xlsx'
dframe=pd.read_excel(datafileStr,names=dataFormat,header=0)
## header=0则不读取excel文件的第一行(标题行)

csv文件示例:

dataFormat=['Class','Name','Sex']
datafileStr=r'F:\abc\123.csv'
dframe=pd.read_csv(datafileStr,names=dataFormat)
## csv文件中无数据列名称

二、Pandas Dataframe 的增、删、改、查、并等基本操作

DataFrame增删改查代码如下(示例):

#定义DataFrame
dataSet=pd.DataFrame([[1,2,3,4],[2,3,4,5]],columns=['a','b','c','d'])
print(dataSet)

#追加一行
dataAddRow=pd.DataFrame([[5,6,7,8]],columns=['a','b','c','d'])
dataSet=pd.concat([dataSet,dataAddRow])
dataSet.reset_index(drop=True,inplace=True)
print(dataSet)
#追加一列
dataAddCol=pd.DataFrame({'e':[11,12,12]})
dataSet=pd.concat([dataSet,dataAddCol],axis=1)
print(dataSet)

#删除一行
dataSet.drop([0],inplace=True)
print(dataSet)
#删除一列
dataSet.drop([dataSet.columns[0]],inplace=True,axis=1)#仅知道列号
dataSet.drop(['b'],inplace=True,axis=1)#知道列名
print(dataSet)

#插入一行(需要借助numpy)
#保持原columns与index不变
insert_row=1
dataSet=pd.DataFrame(np.insert(dataSet.values,0,values=[1,2,3],axis=0),
                     index=np.insert([x for x in dataSet.index[:]],insert_row,values=insert_row,axis=0),
                     columns=dataSet.columns)
print('row_insert')
print(dataSet)
#插入一列
dataSet.insert(1,'e',[1,4,7],allow_duplicates=True)
print(dataSet)

#替换一行=删除一行+插入一行
#替换一列=删除一列+插入一列
#替换单元格数值
dataSet.iloc[0,0]=30
dataSet.loc[1,'e']=25
print(dataSet)

#按行索引返回行
choose_row=dataSet[dataSet.index==1]
print('choose_row')
print(choose_row)
#按行列索引返回单元格数值
print(dataSet.loc[1,'e'])
#在一列中查找数值,返回行索引
find_row=dataSet[dataSet['c']>20]
print('find_row')
print(len(find_row.index))#检验是否找到相应数值
print(find_row)
print(find_row.index[0])

#行列转置
print('transpose')
print(dataSet.transpose())

#按给定列排序
dataSet.sort_values('d',axis=0,ascending=False,inplace=True)
print('sort')
print(dataSet)
#按给定列标准筛选
dataSet_screen=dataSet[dataSet['d']>2]
print('screen')
print(dataSet_screen)

DataFrame合并代码如下(示例):

df1 = pd.DataFrame(np.ones((4, 4))*1, columns=list('DCBA'), index=list('4321'))
df2 = pd.DataFrame(np.ones((4, 4))*2, columns=list('FEDC'), index=list('6543'))
dfc = pd.concat([df1,df2])
print(dfc)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarvinSCI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值