一、Pandas
(1)导入导出
c=pd.read_table('output',header=None,sep=' ')
m.to_csv('m2',index=None,sep='\t',float_format='%.3f')
- sep=' ' :读取的表格是以空格为分隔的
-
header/index=None:
在读取时,即不把读取的表格中的第一行/列当做表头,导入的内容都是表格内容
在导出时,即不保存表格的表头,只保存内容 - float_format='%.3f':导出时保留小数点后三位
(2)修改
优雅地添加一列或一行
参考:https://blog.csdn.net/luoganttcc/article/details/77570024
data1=[1,2,3]
df.loc['new_row'] = data1 #可以加入新的一行,值为1,2,3,行名为new_row
df['new_col']='12' #可以加入新的一行,值都为12,列名为new_col
虽然有一定局限,但是确实挺优雅的,直接将list加进去了,而不需要转成pandas的DataFrame或Series
添加一列(老方法)
#df是dataframe;cddl是series
df.insert(1,1,cddl) #在位置1加入一列,列名为数字1. insert默认加列,不用带axis参数
修改列名
a1.columns=['name','id'] #粗暴改列名
c.rename(columns={1:'id'},inplace=True) #部分改列名
- inplace=True:直接对进行更改
- inplace=False:默认该操作不改变原数据,而是返回一个执行操作后的新dataframe
将某一行/列变为空值
df.iloc[1]=np.nan #第一行变为空值
df.iloc[:,1]=np.nan #第一列变为空值
df_test['B']=np.nan
- df_test['B']=np.nan:也可以直接令一列为空值,如果有一列列名为“B”,则这列变为空值;否则新建一列列名为“B”的列,全列为空值。
拼接merge
m=pd.merge(a1,t2) #a1和t2有相同列名,两表拼接
修改index
df1.reset_index(inplace=True,drop=True)
- 应用场景:df被删掉了一些行之后,行名不连续,可用reset_index重置行名,使行名连续。
- drop=True: 不保留原来的索引
- drop=False: 保留原来的索引,令原来的索引称为df的其中一列
(3)删除相关
删除一列
df.drop(1,axis=1,inplace=True) #删位置在1的一列
删除空值
df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
- axis:0表示行,1表示列,默认为0
- how:any表示有一个空值就删除整行,all表示所有未空值才删除
- thresh:axis中至少有thresh个非缺失值,否则删除
- subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)
去重
df1.drop_duplicates(inplace=True)#删除掉一行中完全一样的行
- keep=False如果完全相同的行都不要了,可以加此参数。即如果有3行内容一致,加keep=False则3行都删掉,不加则只删2行,保留一行。
(4)查看
print(c.head(10)) #打印c的前10行
二、其他
t=[214837,214838,214839,214840,213536]
cddl=['CDD:'+str(i) for i in t]
print(cddl) #CDD:214837,CDD:214838,CDD:214839,CDD:214840,CDD:213536
- 这个是R中的paste语句在python中的应用
网友评论