Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换熊猫中的NaN值_Python_Python 3.x_Pandas - Fatal编程技术网

Python 替换熊猫中的NaN值

Python 替换熊猫中的NaN值,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个数据帧。它的两个栏目是“药品ID”和“假冒重量” 对于“Medicine_ID”的每个值,“假冒重量”列中有NaN或固定值。如何将此NaN值替换为“Medicine_ID”特定值的相应固定值 我的数据片段: train_data.loc[train_data['Medicine_ID']=='IXN93']#用于特定的'Medicine_ID'值 如果我的理解正确,您可以使用模式 数据输入 df=pd.DataFrame({'Medicine_ID':["A","B","C","D"

我有一个数据帧。它的两个栏目是“药品ID”和“假冒重量”

对于“Medicine_ID”的每个值,“假冒重量”列中有NaN或固定值。如何将此NaN值替换为“Medicine_ID”特定值的相应固定值

我的数据片段:

train_data.loc[train_data['Medicine_ID']=='IXN93']#用于特定的'Medicine_ID'值


如果我的理解正确,您可以使用
模式


数据输入

df=pd.DataFrame({'Medicine_ID':["A","B","C","D"],'Counterfeit_Weight':[999,2,np.nan,np.nan]})
df1=pd.DataFrame({'Medicine_ID':["A","A","B","B","C","C","C","D","D","D"],'Counterfeit_Weight':[2,np.nan,2,np.nan,2,2,np.nan,1,1,2]})

解决方案

df1=df1.groupby('Medicine_ID')['Counterfeit_Weight'].apply(lambda x : x.mode()[0]).to_frame()
df=df.merge(df1,left_on='Medicine_ID',right_index=True)
df.Counterfeit_Weight_x.fillna(df.Counterfeit_Weight_y,inplace=True)
df.drop('Counterfeit_Weight_y',1).rename(columns={'Counterfeit_Weight_x':'Counterfeit_Weight'})

Out[360]: 
   Counterfeit_Weight Medicine_ID
0               999.0           A
1                 2.0           B
2                 2.0           C
3                 1.0           D

如果我的理解正确,您可以使用
模式


数据输入

df=pd.DataFrame({'Medicine_ID':["A","B","C","D"],'Counterfeit_Weight':[999,2,np.nan,np.nan]})
df1=pd.DataFrame({'Medicine_ID':["A","A","B","B","C","C","C","D","D","D"],'Counterfeit_Weight':[2,np.nan,2,np.nan,2,2,np.nan,1,1,2]})

解决方案

df1=df1.groupby('Medicine_ID')['Counterfeit_Weight'].apply(lambda x : x.mode()[0]).to_frame()
df=df.merge(df1,left_on='Medicine_ID',right_index=True)
df.Counterfeit_Weight_x.fillna(df.Counterfeit_Weight_y,inplace=True)
df.drop('Counterfeit_Weight_y',1).rename(columns={'Counterfeit_Weight_x':'Counterfeit_Weight'})

Out[360]: 
   Counterfeit_Weight Medicine_ID
0               999.0           A
1                 2.0           B
2                 2.0           C
3                 1.0           D

对于将
NaN
替换为每组最常见的值
Medicine\u ID
可与
index
的第一个值一起使用:



对于将
NaN
替换为每组最常见的值
Medicine\u ID
可与
index
的第一个值一起使用:



您不能将样本数据发布为图片>您不能将样本数据发布为图片>训练数据['Fake_Weight']=(训练数据.groupby('Medicine_ID')['Fake_Weight'].转换(lambda x:x.fillna(x.value_counts().index[0]))正在给我错误索引器错误:索引0超出轴0的范围,大小为0I已使用的列车数据。排序值(['Medicine\u ID','false\u Weight'])。ffill()除非某些组的“Medicine_ID”的值仅在相应的“假冒重量”列中为NaN,否则它工作正常,如果某些
Medicine_ID的值仅为NaN,则可以将其替换为
0
?是jezraei。。这就是我在使用排序值时遇到的问题,jezrael。它与我的datatrain_data['Fake_Weight']=(train_data.groupby('Medicine_ID')['Fake_Weight'])完美配合。转换(lambda x:x.fillna(x.value_counts().index[0])给了我错误索引器错误:索引0超出了轴0的范围,轴的大小为0I使用了train_data.sort_值([Medicine_-ID',[facked_-Weight'])。ffill()除非某些组的“Medicine\u ID”的值仅在对应的“假冒重量”列中为NaN,否则它运行良好如果某些
Medicine\u ID
的值仅为NaN,则可以用
0
替换它?是的,jezraei..这是我使用sort\u Values Hanks很多jezrael时的问题。它与我的数据完美结合