我试图将dataframe
分组,并将其中包含nan
的值保持在dataframe
中。因此我使用fillna("")
。你知道吗
然后取数值列l
,取群的平均值。我遇到了一个错误Could not convert "" to numeric
。它这样做是因为我的l
列中有一些nan
值。你知道吗
理想情况下,在我的groupby之后,我希望将那些now“”值转换回nan
,以便完成.mean()
计算
我所做的解决方法是,首先只将我分组的列转换为“”,执行.mean()
,然后在完成后将“”值转换回nan
。有没有更好的办法?你知道吗
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())
在本例中,我们需要避免在
l
列中填充na值,因为它是您的目标列。你知道吗一种方法是用assign重新分配列
l
。你知道吗相关问题 更多 >
编程相关推荐