pandas 用 Dataframe 中其他记录的值替换空值

twh00eeo  于 2023-03-21  发布在  其他
关注(0)|答案(2)|浏览(175)

我有以下问题
我需要将dataframe中的空cel值替换为其他记录的CustomerNr成本值

df1 = pd.DataFrame([[1004,''], [1004, 'D'],[1005, 'C'], 
                   [1010,'A'], [1010,''],[1010,''],[1010,''],[1004, '']], columns=['CustomerNr','Costs'])

| 客户编号|费用|
| - ------|- ------|
| 1004年||
| 1004年|D级|
| 小行星1005|C级|
| 小行星1010|A类|
| 小行星1010||
| 小行星1010||
| 小行星1010||
| 1004年||
预期输出:
| 客户编号|费用|
| - ------|- ------|
| 1004年|D级|
| 1004年|D级|
| 小行星1005|C级|
| 小行星1010|A类|
| 小行星1010|A类|
| 小行星1010|A类|
| 小行星1010|A类|
| 1004年|D级|

jhkqcmku

jhkqcmku1#

您可以使用ffillbfill

>>> df1.replace("", pd.NA).ffill().bfill()
   CustomerNr Costs
0        1004     D
1        1004     D
2        1005     C
3        1010     A
4        1010     A
5        1010     A
6        1010     A
7        1004     A
nvbavucw

nvbavucw2#

你可以这样做:

import pandas as pd
import numpy as np

df1 = pd.DataFrame([[1004,''], [1004, 'D'],[1005, 'C'], 
                   [1010,'A'], [1010,''],[1010,''],[1010,''],[1004, '']], columns=['CustomerNr','Costs'])

df1['Costs'] = df1['Costs'].replace('', np.nan)  # Replace empty cells with NaNs
print(df1)
df1['Costs'] = df1.groupby('CustomerNr')['Costs'].fillna(method='ffill').fillna(method='bfill')

print(df1)

它给出了

CustomerNr Costs
0        1004     D
1        1004     D
2        1005     C
3        1010     A
4        1010     A
5        1010     A
6        1010     A
7        1004     D

相关问题