现在我有一个以下格式的Excel工作表,已将其转换为Python中的Pandas数据框:
Name Column2 Unnamed: 2 Datatype Definition
0 Entity Accounts Receivable
1 term1 char term1
2 term2 numeric term2
3 term3 char term3
4 Entity Accounts Payable
5 term4 char term4
6 term5 char term5
7 term6 varchar term6
8 term7 numeric term7
我正在尝试编写一个代码,该代码将自动在Column2中的空单元格中填充每个术语名称旁边的“ Entity”对应值。因此term1,term2和term3将是“应收帐款”,term4,term5,term6和term7将是“应付帐款”。
这是我到目前为止编写的代码:
df = pd.read_excel('test.xlsx')
df = df.replace(np.nan,'')
values = df.values.tolist()
ent_list = []
for values[0] in values:
if values[0][0] == 'Entity':
ent_list.append(values[0][1])
for j in range(len(values)):
for e in range(len(ent_list)):
while values[j][1] != ent_list[e]:
values[j][1] = ent_list[e]
break
e += 1
当我打印出“值”时,得到以下信息:
[['Entity', 'Accounts Payable', '', '', ''],
['term1', 'Accounts Payable', '', 'char', 'term1'],
['term2', 'Accounts Payable', '', 'numeric', 'term2'],
['term3', 'Accounts Payable', '', 'char', 'term3'],
['Entity', 'Accounts Payable', '', '', ''],
['term4', 'Accounts Payable', '', 'char', 'term4'],
['term5', 'Accounts Payable', '', 'char', 'term5'],
['term6', 'Accounts Payable', '', 'varchar', 'term6'],
['term7', 'Accounts Payable', '', 'numeric', 'term7']]
理想情况下,它看起来应该像这样:
[['Entity', 'Accounts Receivable', '', '', ''],
['term1', 'Accounts Receivable', '', 'char', 'term1'],
['term2', 'Accounts Receivable', '', 'numeric', 'term2'],
['term3', 'Accounts Receivable', '', 'char', 'term3'],
['Entity', 'Accounts Payable', '', '', ''],
['term4', 'Accounts Payable', '', 'char', 'term4'],
['term5', 'Accounts Payable', '', 'char', 'term5'],
['term6', 'Accounts Payable', '', 'varchar', 'term6'],
['term7', 'Accounts Payable', '', 'numeric', 'term7']]
是否有一种方法可以使用当前使用的方法来实现?我必须想象使用VBA可以做到这一点,但是老实说,使用Python会让我更自在。我将继续修改此代码,但是由于我不太有经验,所以我真的很沮丧。
我知道我可以手动执行此操作,但这会花费很长时间,因为这些报告需要经常生成,并且通常包含40,000至70,000行,因此,我更希望将其自动化。
答案 0 :(得分:0)
df = df.fillna(method = 'ffill')