【问题标题】:如何用另一个数据框中的值替换数据框中的值
【发布时间】:2022-01-23 16:19:47
【问题描述】:

我有 2 个数据框

df_1: 

Week   Day    Coeff_1      ...  Coeff_n

1      1             12           23
1      2             11           19   
1      3             23           68
1      4             57           81
1      5             35           16
1      6             0            0
1      7             0            0

...

50      1             12           23
50      2             11           19   
50      3             23           68
50      4             57           81
50      5             35           16
50      6             0            0
50      7             0            0
df_2: 

Week   Day    Coeff_1      ...  Coeff_n

1      1             0           0
1      2             0           0   
1      3             0           0
1      4             0           0
1      5             0           0
1      6             56          24
1      7             20          10

...

50      1             0           0
50      2             0           0   
50      3             0           0
50      4             0           0
50      5             0           0
50      6             10          84
50      7             29          10

在第一个数据帧df_1 我有周一到周五的系数。在第二个数据帧df_2 我有周末的系数。我的目标是合并两个数据框,这样我就不再有过时的 0 值了。

最好的方法是什么? 我发现使用df.replace 似乎是一个不错的方法

【问题讨论】:

标签: pandas


【解决方案1】:

假设您的数据帧遵循相同的结构,您可以利用pandas 功能到align automatically on indexes。因此,您可以在 df1 中使用 replace 0np.nan,然后使用 fillna

df1.replace({0:np.nan},inplace=True)
df1.fillna(df2)

    Week  Day  Coeff_1  Coeff_n
0    1.0  1.0     12.0     23.0
1    1.0  2.0     11.0     19.0
2    1.0  3.0     23.0     68.0
3    1.0  4.0     57.0     81.0
4    1.0  5.0     35.0     16.0
5    1.0  6.0     56.0     24.0
6    1.0  7.0     20.0     10.0
7   50.0  1.0     12.0     23.0
8   50.0  2.0     11.0     19.0
9   50.0  3.0     23.0     68.0
10  50.0  4.0     57.0     81.0
11  50.0  5.0     35.0     16.0
12  50.0  6.0     10.0     84.0
13  50.0  7.0     29.0     10.0

【讨论】:

    【解决方案2】:

    您不能将第 1-5 天的 df_1 行附加到第 6-7 天的 df_2 行吗?

    df_3 = df_1[df_1.Day.isin(range(1,6))].append(df_2[df_2.Day.isin(range(6,8))])

    要获得正常排序,您可以按周和天对值进行排序:

    df_3.sort_values(['Week','Day'])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 2019-06-30
      • 1970-01-01
      相关资源
      最近更新 更多