在类似于这样的数据集(CSV格式)中,有几列具有值,我如何在
根据这个stackoverflow上的其他帖子,其中一种方法是逐个完成:
df.groupby("DateSent")
的同时使用fillna
来填充所有所需列与组的min()/3
?请参考此处链接。In [5]: df.head()
Out[5]:
ID DateAcquired DateSent data value measurement values
0 1 20210518 20220110 6358.434713 556.0 317.869897 3.565781
1 1 20210719 20220210 6508.458382 1468.0 774.337509 5.565384
2 1 20210719 20220310 6508.466246 1.0 40.837533 1.278085
3 1 20200420 20220410 6507.664194 48.0 64.335047 1.604183
4 1 20210328 20220510 6508.451227 0.0 40.337486 1.270236
根据这个stackoverflow上的其他帖子,其中一种方法是逐个完成:
df["data"] = df.groupby("DateSent")["data"].transform(lambda x: x.fillna(x.min()/3))
df["value"] = df.groupby("DateSent")["value"].transform(lambda x: x.fillna(x.min()/3))
df["measurement"] = df.groupby("DateSent")["measurement"].transform(lambda x: x.fillna(x.min()/3))
df["values"] = df.groupby("DateSent")["values"].transform(lambda x: x.fillna(x.min()/3))
在我的原始数据集中,我有100000个这样的列,理论上我可以循环遍历所有所需的列名。但是有没有更好/更快的方法?也许在pandas
中已经实现了一些东西?