我想把A组
dataframe
并保持
nan
在他们身上
小精灵
.所以我用
fillna("")
是的。
然后我取数字列
l
,我想取这个组的平均值。我遇到了一个错误
Could not convert "" to numeric
是的。它这么做是因为
一
列有一些
南
价值观。
理想情况下,在groupby之后,我希望将那些now“”值转换回
南
所以我可以完成
.mean()
计算
我所做的工作是先将分组依据的列转换为“”,然后执行
.平均值()
,然后将“”值返回到
南
完成后。有更好的办法吗?
import random
random.seed(100)
df = pd.DataFrame({
'a':[random.randint(0, 1) for x in range(1000)],
'b':[random.randint(0, 1) for x in range(1000)],
'c':[random.choice([0, 1, np.nan]) for x in range(1000)],
'd':[random.randint(0, 1) for x in range(1000)],
'e':[random.choice([0, 1, np.nan]) for x in range(1000)],
'f':[random.choice(['id', 'id2']) for x in range(1000)],
'g':[random.choice(['apple', 'orange', 'pear']) for x in range(1000)],
'h':[random.randint(0, 1) for x in range(1000)],
'i':[random.randint(0, 1) for x in range(1000)],
'j':[random.randint(0, 1) for x in range(1000)],
'k':[random.randint(0, 1) for x in range(1000)],
'l':[random.choice([1, 2, 34, 6, 36, 990, np.nan, np.nan, 6, 5, 3, 2, 1, 1, 1]) for x in range(1000)]
})
df['mean_l'] = df.fillna("").groupby(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'])['l'].transform(lambda x: x.mean())