【问题标题】:How to replace a zero and nan values in dataframe based in where condition in fillna or replace如何根据fillna中的条件替换数据框中的零和nan值或替换
【发布时间】:2017-12-05 16:57:14
【问题描述】:

我有一个这样的数据框

Temp_in_C   Temp_in_F   Date          Year   Month   Day
   23          65       2011-12-12     2011    12     12
   12          72       2011-12-12    2011     12      12
   NaN         67       2011-12-12     2011    12      12
   0           0        2011-12-12     2011    12      12
   7           55       2011-12-13     2011    12       13

我正在尝试以这种格式获取输出(pertuculer 日的 NaN 和零值仅替换为当天的 avg temp) 输出将是

Temp_in_C   Temp_in_F   Date          Year   Month   Day
   23          65       2011-12-12     2011    12     12
   12          72       2011-12-12    2011     12      12
   17.5        67       2011-12-12     2011    12      12
   17.5        68       2011-12-12     2011    12      12
   7           55       2011-12-13     2011    12       13

这些山谷将被替换为那个特殊的日子。我正在尝试这样做

temp_df = csv_data_df[csv_data_df["Temp_in_C"]!=0]
temp_df["Temp_in_C"] = 
temp_df["Temp_in_C"].replace('*',np.nan)
x=temp_df["Temp_in_C"].mean()   
csv_data_df["Temp_in_C"]=csv_data_df["Temp_in_C"]
.replace(0.0,x)
csv_data_df["Temp_in_C"]=csv_data_df["Temp_in_C"]
.fillna(x)

此代码取整列的平均值并直接替换它。 我如何按天分组并取平均值,然后仅替换该特定日期的值。

【问题讨论】:

  • 这不会导致数据损坏吗?例如,您的 17.5 C 最终与两个不同的华氏温度值相邻(两者都不正确;它们都应该是 63.5)。
  • @JohnZwinck 这些值不是计算出来的,我写它们只是为了理解我的问题。不是数据中的实际值。我只是想定义我的问题。我理想的情况下它们将是相同的

标签: python csv pandas numpy dataframe


【解决方案1】:

首先,将零替换为NaN

df = df.replace(0,np.nan)

然后使用transform 填充缺失值(请参阅此post

df.groupby('Date').transform(lambda x: x.fillna(x.mean()))

给予:

   Temp_in_C  Temp_in_F  Year  Month  Day
0       23.0       65.0  2011     12   12
1       12.0       72.0  2011     12   12
2       17.5       67.0  2011     12   12
3       17.5       68.0  2011     12   12
4        7.0       55.0  2011     12   13

【讨论】:

    猜你喜欢
    • 2020-02-26
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    相关资源
    最近更新 更多