在其他列上有条件的数据框中创建列
问题描述:
我正在尝试创建一个新列,其中另一列中的值的平均值取决于另一列中的值。在其他列上有条件的数据框中创建列
pd.DataFrame({"A":[1, 2, 1, 2],
"B":[4, 6, 8, 12]
我想创建一个新的列“C”,这将是
pd.DataFrame({"A":[1, 2, 1, 2, 3],
"B":[4, 6, 8, 12, 4],
"C":[6,9,6,9,4]}
如果它是不明确的,我要输出的值的列B中的意思是当在列中的值A是一样的。所以,C =(4 + 6 + ...)/ n其中A == 1和C =(6 + 8 + ...)/ n其中A == 2等等......
我是无法为此考虑伪代码。除了代码解决方案,任何合理的解释将不胜感激。
答
这是一个transform
:
In [11]: df
Out[11]:
A B
0 1 4
1 2 6
2 1 8
3 2 12
4 3 4
In [12]: df.groupby("A")["B"].transform('mean')
Out[12]:
0 6
1 9
2 6
3 9
4 4
Name: B, dtype: int64
In [13]: df["C"] = df.groupby("A")["B"].transform('mean')
也看到group by docs。
对不起,我不遵循逻辑。什么是n? – kbball