df['Example'] = df.groupby('Reference')['Example'].fillna(method='ffill')
我可能走错了路。我一直在使用上面的代码在我的数据框架中为其他列填充nan。这对于填补缺失信息非常有效。但后来我遇到了一个问题,这个问题无法填补缺失的值。我现在想解决的问题是这样的所以我只想在Beta版上填写dept字段的空白,但我想用"描述"为"外包"的行中的dept值来填充它们。我看到了几个条件填充的例子,但没有一个适用于我的情况编辑了表格,尽量减少混乱。我以前没有很好地表达我的问题。我要找的是,如果新闻栏包含测试版,那么它会在其中寻找外包的行。它使用外包的部门来填写发票上其他有相同工作#的nan。但不会填满任何其他奶奶。
我的数据帧:
发票如果我理解得对,这应该能解决你的问题。可能有一种更有效的方法不需要迭代。但它确实起到了作用,应该很容易理解:
import pandas as pd
from io import StringIO
df = pd.read_csv(StringIO('''
Invoice Reference Press Description Dept
INV0001 Job#3045 Alpha Copies
INV0001 Job#3045 Alpha Binding
INV0002 Job#3055 Beta Design
INV0002 Job#3055 Beta Outsource Digital
INV0002 Job#3055 Beta Site Survey
INV0002 Job#3056 Beta Packaging
INV0002 Job#3056 Beta Mounting Brackets Sign
INV0002 Job#3056 Beta Installation Sign
INV0003 Job#3067 Delta Binding Bond
INV0004 Job#3042 Beta Site Survey
INV0004 Job#3042 Beta Outsource Color
INV0004 Job#3042 Beta Design
INV0005 Job#3058 Ceta Installation Sign
'''), sep="t")
df.set_index(["Reference", "Press", "Description"], inplace=True)
for (ref, press, descr) in df[df.Dept.isna()].index:
if press=="Beta" and (ref, press, "Outsource") in df.index:
df.loc[(ref,press,descr)].Dept = df.loc[(ref, press, "Outsource")].Dept
else:
df.loc[(ref,press,descr)].Dept = ""
df.reset_index(inplace=True)
索引 | 发票 | 参考按 | >描述<1th>部门||
---|---|---|---|---|
0 | INV0001 | 作业号3045 | Alpha | 副本|
1 | INV0001 | 作业#3045 | 阿尔法绑定||
2 | INV0002 | 作业号3055 | 测试版设计数字版||
3 | INV0002 | 作业号3055测试版 | 外包 | >数字|
4 | INV0002 | 作业号3055 | 测试版现场调查数字版||
5 | INV0002 | 作业#3056 | 测试版 | 包装|
6 | INV0002 | 作业#3056 | 测试版安装支架标志||
7 | INV0002 | 作业#3056 | 测试版安装签署||
8 | INV0003 | 作业#3067 | 增量绑定债券||
9 | INV0004 | |||
10 | INV0004 | 作业号3042 | 测试版外包颜色 | |
11 | INV0004 | 作业号3042测试版 | 设计 | 颜色 |
12 | INV0005 | 作业#3058Ceta | >安装 | 签名 |
df.groupby('Invoice').apply(lambda x:x.ffill().bfill())
Invoice Press Description Dept
0 INV0001 Alpha Something NaN
1 INV0002 Beta Something Digital
2 INV0002 Beta Outsource Digital
3 INV0002 Beta Something Digital
4 INV0003 Delta Something Color
5 INV0004 Beta Something Color
6 INV0004 Beta Outsource Color
7 INV0004 Beta Something Color
8 INV0005 Ceta Other Sign