同事们,下午好!在根据特定条件拆分列时,我正在尝试做正确的事情。它似乎已经完成了,但是有许多“错误”并且代码本身看起来并不讨人喜欢。请帮助修复/纠正
给定以下数据框:
您需要执行以下操作:提取发票编号(例如,18-0-115593)、操作类型(销售或收据或调整或折扣)和操作日期。
目标是获得大约以下最终数据帧:
我有点做到了,但我得到的不是折扣(GK),而且代码很可能很麻烦
# читаем файл и создаем DF
df_62 = pd.read_excel(open('Карточка счета.xls', 'rb'))
df_62.columns = ['Date', 'Name of invoice', 'Debet', 'Credit', 'Saldo' ]
# вытаскиваем из столбца Name of invoice номер инвойса и дату
df_62['invoice_main'] = df_62['Name of invoice'].str.extract(r'(\d+[ \-]\d+[ \-]\d+)')
df_62['invoice_date'] = df_62['Name of invoice'].str.extract(r'(\d{2}[ \.]\d{2}[ \.]\d{4})')
# вытаскиваем тип операции(Реализация или корректировка или скидки или...)
def get_str_split(string):
new_list = string.split(' ')
for word in new_list:
if word == "скидки":
return new_list[1:3]
else:
return new_list[0]
df_62['Name of invoice'] = df_62['Name of invoice'].astype(str)
df_62['type_prov'] = df_62['Name of invoice'].apply(get_str_split)
# у меня вместо типа операции "скидки" вытащился (ГК)
我将非常感激如何更简单地使用 pandorable :)


您不需要循环检查每个单词,您可以立即检查列表中是否存在单词: