Python 如何用Pandas中的最后一个可用值替换丢失的数据
在熊猫中,我是否可以根据每个ID的最后可用值进行插补 身份证件 周 类别 1001 1. A. 1001 2. A. 1001 3. 1001 4. B 1002 1. B 1002 2. 1002 3. C 1002 4.Python 如何用Pandas中的最后一个可用值替换丢失的数据,python,pandas,dataframe,Python,Pandas,Dataframe,在熊猫中,我是否可以根据每个ID的最后可用值进行插补 身份证件 周 类别 1001 1. A. 1001 2. A. 1001 3. 1001 4. B 1002 1. B 1002 2. 1002 3. C 1002 4. 您并没有真正描述您想要什么,但它看起来像是您正在寻找的(或fillna(method='ffill'))。这将用以前的元素替换缺少的值(na)(因此f或wardfill) >>df 周类别 身份证件 10011 A 10012 A 10013无 10014 B 10021B
您并没有真正描述您想要什么,但它看起来像是您正在寻找的(或
fillna(method='ffill')
)。这将用以前的元素替换缺少的值(na
)(因此f
或wardfill
)
>>df
周类别
身份证件
10011 A
10012 A
10013无
10014 B
10021B
1002 2无
1002 3 C
1002 4无
>>>df['Category']=df['Category'].ffill()
>>>df
周类别
身份证件
10011 A
10012 A
10013 A
10014 B
10021B
1002 2 B
1002 3 C
1002 4 C
如果缺少的值是其他值,例如空字符串,则可以删除这些值,然后使用相同的解决方案
>>> df['Category'].mask(df['Category'] == '').ffill()
ID
1001 A
1001 A
1001 A
1001 B
1002 B
1002 B
1002 C
1002 C
Name: Category, dtype: object
如果你想限制每个ID,你可以使用
如果ID开头的值为空,则这只会给出与上一个解决方案不同的结果。如果不希望从上一个ID填充,请参阅以下内容:
>>> df
Week Category
ID
1001 1 A
1001 2 A
1001 3 None
1001 4 B
1002 1 None
1002 2 None
1002 3 C
1002 4 None
>>> df.groupby('ID')['Category'].ffill()
ID
1001 A
1001 A
1001 A
1001 B
1002 NaN
1002 NaN
1002 C
1002 C
Name: Category, dtype: object
>>> df['Category'].ffill()
ID
1001 A
1001 A
1001 A
1001 B
1002 B
1002 B
1002 C
1002 C
Name: Category, dtype: object
您并没有真正描述您想要什么,但它看起来像是您正在寻找的(或
fillna(method='ffill')
)。这将用以前的元素替换缺少的值(na
)(因此f
或wardfill
)
>>df
周类别
身份证件
10011 A
10012 A
10013无
10014 B
10021B
1002 2无
1002 3 C
1002 4无
>>>df['Category']=df['Category'].ffill()
>>>df
周类别
身份证件
10011 A
10012 A
10013 A
10014 B
10021B
1002 2 B
1002 3 C
1002 4 C
如果缺少的值是其他值,例如空字符串,则可以删除这些值,然后使用相同的解决方案
>>> df['Category'].mask(df['Category'] == '').ffill()
ID
1001 A
1001 A
1001 A
1001 B
1002 B
1002 B
1002 C
1002 C
Name: Category, dtype: object
如果你想限制每个ID,你可以使用
如果ID开头的值为空,则这只会给出与上一个解决方案不同的结果。如果不希望从上一个ID填充,请参阅以下内容:
>>> df
Week Category
ID
1001 1 A
1001 2 A
1001 3 None
1001 4 B
1002 1 None
1002 2 None
1002 3 C
1002 4 None
>>> df.groupby('ID')['Category'].ffill()
ID
1001 A
1001 A
1001 A
1001 B
1002 NaN
1002 NaN
1002 C
1002 C
Name: Category, dtype: object
>>> df['Category'].ffill()
ID
1001 A
1001 A
1001 A
1001 B
1002 B
1002 B
1002 C
1002 C
Name: Category, dtype: object
如果缺少特定ID类别(如1002)的第一个值,它将用以前ID的最后一个可用类别填充,我希望它在每个唯一ID内填充,而不是从以前ID中获取值,我如何才能做到这一点?谢谢,如果缺少特定ID类别(如1002)的第一个值,这将非常有用,它将填充上一个ID的最后一个可用类别,我希望它填充在每个唯一的ID中,而不是从上一个ID中获取值,我如何才能做到这一点?谢谢,这真的很有帮助