import numpy as np
required_input = required_input.replace(np.nan, '')
query_result_input = query_result_input.replace(np.nan, '')
将指定列toy的空值替换成指定值100:
df.replace({'toy':{np.nan:100}})
筛选有缺失值的行
df.loc[df.isna().any(1)]
筛选没有缺失值的行
df.loc[~df.isna().any(1)]
筛选有缺失值的列
df.loc[:,df.isna().any()]
筛选没有缺失值的列
df.loc[:,~df.isna().any()]
把空值置换为待补充
df.fillna("待补充")
把空值置换为0
df.fillna(0)
插值填充,例如excel的下拉填充
df.interpolate()
删除有空值的行
df.dropna()
df.dropna(how='all')
删除B或者D列中有空值的行
ss.dropna(subset=['B','D'],inplace=True)
删除有缺失值的列
df.dropna(1)
df.dropna(axis=1)
df.dropna(axis='columns')
时间数据的缺失值用NaT表示
整型数据的缺失值用NaN表示
缺失值的运算:
加法会把缺失值当作0,忽略缺失值,累加函数cumsum()
df.d.cumsum()
cumsum() 和cumprod()会忽略NA值,但值会保留在序列中
df.D.cumsum(skipna=False) 跳过有缺失值的计算并且返回缺失值
对每一列进行求和:
df.sum()
对每一列进行求个数,忽略空值:
qq = ss.count()
对每一行进行求个数,忽略空值
qq = ss.count(1)
在做聚合分析的时候,如果聚合分组的列里有空值,则会自动忽略这些值,直接不显示:
df.groupby['B'].sum()
如果计算中需要计入有空值的分组,可以将dropna=False传给df.groupby():
df.groupby('B',dropna=False).sum()
ser = pd.Series([0.,1.,2.,3.,4.])
把序列里的0替换为5
ser = ser.replace(0,5)
把序列的0替换为4,1替换为3。。。
ser = ser.replace([0,1,2,3,4],[4,3,2,1,0])
用字典映射对应的值,把0替换为10,把1替换为100
ser = ser.replace({0:10,1:100})
以上针对一个Serries,相当于df的某一列
一下针对于df
把df的a列的0替换为100和df的b列的5替换为100
df = df.replace({'a':0,'b':5},100)
指定列里的替换规则:把a列里的0替换为100,a列里的4替换为400
df.replace({'a':{0:100,4:400}})
找出重复值,按行,重复的全部标志为True
dfj = df5.duplicated(keep=False)
保留重复的最后一个,第一次出现的字符标记为True,例如,1 1,把第一个1出现的标记为True
dfj = df5.duplicated(keep='last')
筛选出重复的内容:
dfj = df[df5.duplicated()]
指定筛选哪列的重复内容:、
df6 = df5.duplicated(subset='B',keep=False)