我有一个数据集,需要有条件地填充来自适当的groupby的第一个值,但我无法弄清楚。
导入numpy作为NP
导入大熊猫作为pd
df_dict = {
'id':[1 ...
我有一个数据集,我需要有条件地填充来自适当组的第一个值,但我无法弄清楚。
import numpy as np
import pandas as pd
df_dict = {
'id':[1, 1, 1, 1, 2, 2, 2, 2],
'data':['A', np.nan, np.nan, np.nan, 'B', np.nan, np.nan, np.nan, 'C', np.nan, np.nan]
}
df = pd.DataFrame(df_dict)
我需要创建一个看起来如下的数据框:
final_dict = {
'id':[1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2],
'data':['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C']
}
final = pd.DataFrame(final_dict)
我的Instince是groupby
id
,然后做一个
.fillna(sothings)
,但我不知道该怎么办。
我尝试了
df.groupby('id')['data'].fillna(df['data'].first_valid_index())
但这是
0
s而不是复制我想要的。
我还有另一个部分解决方案:
for col_name, data in df.items():
df[col_name] = df.groupby('id').apply(
lambda x: x[col_name].fillna(x.loc[x[col_name].last_valid_index(), col_name])
).reset_index(drop=True)