【发布时间】:2017-08-13 15:49:00
【问题描述】:
我知道 bfill 和 ffill 在同一列的行中填充值。但是,当您需要在数据框中的某些多列中填充值时,您该怎么做呢?
示例如下:
初始df:
import pandas as pd
inidf = [('Prod', ['P1', 'P2']),
('A', ['1', '1']),
('1', ['', '40']),
('2', ['10', '60']),
('3', ['30', '']),
('B', ['1', '2']),
]
df = pd.DataFrame.from_items(inidf)
df
Prod A 1 2 3 B
0 P1 1 10 30 1
1 P2 1 40 60 2
目标df:
tgtdf = [('Prod', ['P1', 'P2']),
('A', ['1', '1']),
('1', ['10', '40']),
('2', ['10', '60']),
('3', ['30', '60']),
('B', ['1', '2']),
]
df2 = pd.DataFrame.from_items(tgtdf)
df2
Prod A 1 2 3 B
0 P1 1 10 10 30 1
1 P2 1 40 60 60 2
在我上面的示例中,要定位的列是名为 1、2 和 3 的列。在第一行中,第一个目标列(名为 1)有一个缺失值,在这种情况下是从下一个填充的列复制而来(命名为 2)。在第二行中,最后一个目标列(名为 3)有一个缺失值,在本例中是从先前填充的列(名为 2)复制而来的。
【问题讨论】:
-
是否需要查找
fill和bfill的行?如果2列中没有值有时被bfill替换,有时被ffill替换,是否有可能?有多列?
标签: python pandas dataframe reshape linear-interpolation