python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > pandas灵活增加新的空字段

pandas如何灵活增加新的空字段

作者:距离&

这篇文章主要介绍了pandas如何灵活增加新的空字段问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

pandas灵活增加新的空字段

先说需求

从mongodb中读取数据的某些字段(如A,B,C,D),如果数据没有某个字段(如‘D’字段),就增加该字段且值为空

解决方法

import pandas as pd
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
df1=pd.DataFrame(a,index=['row0','row1','row2'],columns=list('ABC'))
df1

df1结果:

df1的结果

创建空的且有指定字段的dataframe

df2 = pd.DataFrame(columns=['A','B','C','D'])

再通过pd.concat方法连接

pd.concat([df2,df1])

最后的结果如下:

Python pandas数据清洗,按条件赋值空字段

Python pandas按条件赋值空字段

找到空值,并查看空值的有关规律

旅游数据中节省字段部分为空,考虑使用目的地的均值赋值给对应的空值;有北京到西安的旅程的节省为空,过程中需要:

1、找到节省字段为空的行列:

import numpy as np
import pandas as pd
data[data['节省'].isnull()]

2、提取其中的目的地:

data.loc[data['节省'].isnull(),['目的地']]

3、各个目的地及出发地的均值:

round(data.groupby(['目的地','出发地'])['节省'].mean())

使用fillna函数解决问题:

1、建立一个新的DataFrame用以装入更新后数据

2、获得目的地情况

3、赋值目的地均值到目的地空值

4、将处理后数据丢进新的DataFrame

5、将2-4步骤进行循环

datafillna = pd.DataFrame()
place = data.目的地.unique()
for pla in place:
    t = data.目的地 == pla
    print(t)
    a = data[t].fillna(data[t].mean())
    print(a)
    datafillna = datafillna.append(a)
    break

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文