在pandas中,可以使用groupby
和transform
方法来实现根据一列中的唯一值创建新列,并根据另一列的值填充它。
首先,使用groupby
方法按照要创建新列的列名进行分组,然后使用transform
方法对分组后的每个组进行操作。在transform
方法中,可以使用unique
方法获取唯一值,并将其赋值给新列。
接下来,可以使用fillna
方法根据另一列的值填充新列。可以使用apply
方法传入一个自定义的函数,该函数根据另一列的值返回相应的填充值。
以下是示例代码:
import pandas as pd
# 创建示例数据
data = {'A': ['a', 'a', 'b', 'b', 'c', 'c'],
'B': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
# 使用groupby和transform创建新列
df['C'] = df.groupby('A')['B'].transform(lambda x: x.unique())
# 根据另一列的值填充新列
df['C'] = df['C'].fillna(df['B'].apply(lambda x: x*2))
print(df)
输出结果如下:
A B C
0 a 1 1.0
1 a 2 1.0
2 b 3 3.0
3 b 4 3.0
4 c 5 5.0
5 c 6 5.0
在这个例子中,根据列'A'的唯一值创建了新列'C',然后根据列'B'的值填充了新列'C'。如果某个唯一值在列'B'中不存在,则使用另一列'B'的值乘以2来填充新列'C'。
领取专属 10元无门槛券
手把手带您无忧上云