Excel 公式转换为 Python 3

我坚持将以下 excel 公式转换为 Python 3 代码:


=IF(B1="";A1&D1;A1&VLOOKUP(B1;table_2!table_2_col_A:table_2_col_B;2;FALSE))

我尝试了以下方法,但它不会产生与原始 excel 文件列中相同的结果:


excel_df['new_col)'] = ''


for i, j, k in zip(excel_df['B'], 

                   excel_df['A'], 

                   excel_df['D']):


    for v, x in zip(table_2['A'], 

                    table_2['B']):


        if not pd.isnull(i):


            if i in v:


                excel_df.at[i, 'new_col'] = j + x


        elif pd.isnull(i):


            excel_df.at[i, 'new_col'] = j + k

很抱歉,我无法生成示例数据供您尝试,也无法在此处分享原始数据。如果您能提供任何指示或更正以更好地将这个 excel 公式适应 python,我将非常感激。


非常感谢您提前


吃鸡游戏
浏览 157回答 2
2回答

慕侠2389804

这可能是您正在寻找的:tbl2 = table_2[['col_A','col_B']]## df has columns A,B,Ddf = df.merge(tbl2,left_on=['B'],right_on=['col_A'],how='left')# df['col_B'] = df['col_B'].fillna(0)df['result'] = np.where(df['B']=='',df['A']*df['D'],df['A']*df['col_B'])

弑天下

假设您的表格如下所示:>>> df     A    B   C   D0  A0   B0  C0  D01  A1   B1  C1  D12  A2   B2  C2  D23  A3  NaN  C3  D34  A4   B4  C4  D45  A5   B5  C5  D56  A6  NaN  C6  D67  A7  NaN  C7  D78  A8  NaN  C8  D89  A9  NaN  C9  D9>>> table_2      A    B0   B20  x201   B19  x192   B18  x183   B17  x174   B16  x165   B15  x156   B14  x147   B13  x138   B12  x129   B11  x1110  B10  x1011   B9   x912   B8   x813   B7   x714   B6   x615   B5   x516   B4   x417   B3   x318   B2   x219   B1   x1这是一种方法:# Prepare table_2 into a "look up" table of sort>>> table_2 = table_2.set_index('A')# Formula translation>>> df = df.assign(result=df.apply(lambda x: (x['A'] + x['D']) if pd.isna(x['B']) else table_2['B'].get(x['B']), axis=1))结果:>>> df    A    B   C   D result0  A0   B0  C0  D0   None1  A1   B1  C1  D1     x12  A2   B2  C2  D2     x23  A3  NaN  C3  D3   A3D34  A4   B4  C4  D4     x45  A5   B5  C5  D5     x56  A6  NaN  C6  D6   A6D67  A7  NaN  C7  D7   A7D78  A8  NaN  C8  D8   A8D89  A9  NaN  C9  D9   A9D9使用apply并不是完全理想的解决方案,但它为您提供了一些处理条件的灵活性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python