pandas 是否有任何方法[已关闭]

b4lqfgs4  于 2023-01-01  发布在  其他
关注(0)|答案(1)|浏览(99)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
昨天关门了。
Improve this question
假设我有一个名为market的 Dataframe ,其中包含两列fruit和fruit_code,Fruit是一个string列,fruit_code是一个int列,其中包含超市中每种水果的数字代码(例如橙子=124)。
但是,它们是fruit列中的一些缺失值(但fruit_code中没有),因此我希望通过fruit_code列来完成fruit列中的所有值。
我想有一个特定的功能,但我已经搜索了所有的互联网,我仍然在努力找到它。无论如何,如果有人知道一个替代方法,请告诉我。

kgsdhlau

kgsdhlau1#

我会使用groupby-transform,考虑下面这个小例子:

import pandas as pd
import numpy as np

df = pd.DataFrame({'fruit':[np.nan,'pear','banana','kiwi','apple',np.nan,np.nan,'banana'],
                  'fruit_code':[0,3,1,2,0,3,3,1]})
fruit   fruit_code
0 NaN     0
1 pear    3
2 banana  1
3 kiwi    2
4 apple   0
5 NaN     3
6 NaN     3
7 banana  1

我们该怎么办?

  • 按代码分组;
  • 对于每个代码,获得'fruit'列的第一个非空值;
  • transform()该字典到具有与原始 Dataframe 兼容的索引的列中;
  • fillna()
df['fruit'] = df['fruit'].fillna(df.groupby('fruit_code').transform('first')['fruit'])
fruit   fruit_code
0 apple   0
1 pear    3
2 banana  1
3 kiwi    2
4 apple   0
5 pear    3
6 pear    3
7 banana  1

当然,如果某个代码根本没有有效的fruit值,这可能仍然会留下一些空白。

相关问题