以下是一个示例代码,可以实现按组重复值,直到出现新的值,并且只有在第一个非NA值出现时才重复。
import pandas as pd
import numpy as np
# 创建示例数据
data = {
'group': ['A', 'A', 'A', 'B', 'B', 'B'],
'value': [1, np.nan, np.nan, 2, 3, np.nan]
}
df = pd.DataFrame(data)
# 按组重复值,直到出现新的值
df['new_value'] = df.groupby('group')['value'].ffill()
# 只有在第一个非NA值出现时才重复
df['new_value'] = df.groupby('group')['new_value'].apply(lambda x: x.bfill().ffill())
print(df)
输出结果为:
group value new_value
0 A 1.0 1.0
1 A NaN 1.0
2 A NaN 1.0
3 B 2.0 2.0
4 B 3.0 3.0
5 B NaN 3.0
在这个示例中,我们使用了Pandas库来处理数据。首先,我们创建了一个包含组和值的DataFrame。然后,我们使用groupby
函数按组对值进行分组。接下来,我们使用ffill
函数将组内的值前向填充到缺失值。最后,我们使用apply
函数和bfill
函数来处理只有在第一个非NA值出现时才重复的情况。最终,我们将新的值存储在new_value
列中,并输出整个DataFrame。
上一篇:按组重复序列
下一篇:按组重新采样数据并计算滚动总和