假设数据帧df如下:

          date  actual_value  fitted_value  predicted_value    code
0    2023/8/31           NaN           NaN       520.994413  LX0301
1    2023/9/30           NaN           NaN       580.967973  LX0301
2   2023/10/31           NaN           NaN       650.392867  LX0301
3    2023/8/31    471.459992    520.027310              NaN  LX0301
4    2023/9/30           NaN           NaN       531.199547  LX0301
5   2023/10/31           NaN           NaN       600.053484  LX0301
6    2023/8/31    471.459992    511.902229              NaN  LX0301
7    2023/9/30    480.400211    518.202630              NaN  LX0301
8   2023/10/31           NaN           NaN       537.890792  LX0301
9    2023/8/31           NaN           NaN        99.216818  LX0101
10   2023/9/30           NaN           NaN        98.624779  LX0101
11  2023/10/31           NaN           NaN        98.690596  LX0101
12   2023/8/31     99.400000     99.221767              NaN  LX0101
13   2023/9/30           NaN           NaN        98.822977  LX0101
14  2023/10/31           NaN           NaN        98.875062  LX0101
15   2023/8/31     99.400000     99.220693              NaN  LX0101
16   2023/9/30     98.700000     98.802146              NaN  LX0101
17  2023/10/31           NaN           NaN        98.738091  LX0101

对于每组code个(在本例中,有LX0301个和LX0101个),如果date‘S的值相同,我需要用该日期存在的actual_value填充actual_value中的NAN.以LX0301为例,我们看到第0142023/8/312023/9/30行中的actual_value是缺失值,但它们出现在第6行(或3行)和7行中,因此我们需要使用第6行(或3行)和7行中现有的实际值来填充第014行.注:对于本例中的每组数据,同一日期的实际值相同(例如,第3行和6行、第12行和15行的实际值相同).如何做到这一点呢?谢谢.

所需结果如下:

          date  actual_value  fitted_value  predicted_value    code
0    2023/8/31    471.459992           NaN       520.994413  LX0301
1    2023/9/30    480.400211           NaN       580.967973  LX0301
2   2023/10/31           NaN           NaN       650.392867  LX0301
3    2023/8/31    471.459992    520.027310              NaN  LX0301
4    2023/9/30    480.400211           NaN       531.199547  LX0301
5   2023/10/31           NaN           NaN       600.053484  LX0301
6    2023/8/31    471.459992    511.902229              NaN  LX0301
7    2023/9/30    480.400211    518.202630              NaN  LX0301
8   2023/10/31           NaN           NaN       537.890792  LX0301
9    2023/8/31     99.400000           NaN        99.216818  LX0101
10   2023/9/30     98.700000           NaN        98.624779  LX0101
11  2023/10/31           NaN           NaN        98.690596  LX0101
12   2023/8/31     99.400000     99.221767              NaN  LX0101
13   2023/9/30     98.700000           NaN        98.822977  LX0101
14  2023/10/31           NaN           NaN        98.875062  LX0101
15   2023/8/31     99.400000     99.220693              NaN  LX0101
16   2023/9/30     98.700000     98.802146              NaN  LX0101
17  2023/10/31           NaN           NaN        98.738091  LX0101

推荐答案

try :

df['actual_value_new'] = df.groupby(['code','date'])['actual_value'].transform('first')

输出(使用actual_value_new仅用于显示旧列和新列):

          date  actual_value  fitted_value  predicted_value    code  actual_value_new
0    2023/8/31           NaN           NaN       520.994413  LX0301        471.459992
1    2023/9/30           NaN           NaN       580.967973  LX0301        480.400211
2   2023/10/31           NaN           NaN       650.392867  LX0301               NaN
3    2023/8/31    471.459992    520.027310              NaN  LX0301        471.459992
4    2023/9/30           NaN           NaN       531.199547  LX0301        480.400211
5   2023/10/31           NaN           NaN       600.053484  LX0301               NaN
6    2023/8/31    471.459992    511.902229              NaN  LX0301        471.459992
7    2023/9/30    480.400211    518.202630              NaN  LX0301        480.400211
8   2023/10/31           NaN           NaN       537.890792  LX0301               NaN
9    2023/8/31           NaN           NaN        99.216818  LX0101         99.400000
10   2023/9/30           NaN           NaN        98.624779  LX0101         98.700000
11  2023/10/31           NaN           NaN        98.690596  LX0101               NaN
12   2023/8/31     99.400000     99.221767              NaN  LX0101         99.400000
13   2023/9/30           NaN           NaN        98.822977  LX0101         98.700000
14  2023/10/31           NaN           NaN        98.875062  LX0101               NaN
15   2023/8/31     99.400000     99.220693              NaN  LX0101         99.400000
16   2023/9/30     98.700000     98.802146              NaN  LX0101         98.700000
17  2023/10/31           NaN           NaN        98.738091  LX0101               NaN

Python-3.x相关问答推荐

如何转换Pandas中的数据,以使我 Select 的列名变为行值并增加行?

pandas查找另一列中是否存在ID

小部件padx和包方法ipadx有什么不同?

无法使用Python发送带有参数和标头的POST请求

为什么 tkinter 在 tkinter 窗口外计算鼠标事件?

调用 Clear 时 Airflow 会加载新代码吗

使用 multiprocessing 处理图像

Python 3 - 给定未知数量的类别动态地将字典嵌套到列表中

如何在不使用循环的情况下根据另一个数组的索引值将 numpy 数组中不同通道的值设置为零?

列表中的重复数字与列表理解

使用 Python 解析 JSON 嵌套字典

使用 Sympy 方程进行绘图

迭代dict值

如何使用python将放置在多个嵌套文件夹中的文档移动和重命名为一个新的单个文件夹?

如何在不使用 @hydra.main() 的情况下获取 Hydra 配置

在python中,如果一个函数没有return语句,它会返回什么?

无论如何我可以在 Google colaboratory 中下载文件吗?

Python3 - 如何从现有抽象类定义抽象子类?

finally 总是在 try 块返回之前运行,那么为什么 finally 块中的更新不会影响 try 块返回的变量的值呢?

在 PyCharm 中配置解释器:请使用不同的 SDK 名称