为了账号安全,请及时绑定邮箱和手机立即绑定

Excel 公式转换为 Python 3

Excel 公式转换为 Python 3

吃鸡游戏 2022-10-18 14:47:34
我坚持将以下 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,我将非常感激。非常感谢您提前
查看完整描述

2 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

这可能是您正在寻找的:


tbl2 = table_2[['col_A','col_B']]


## df has columns A,B,D

df = 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'])


查看完整回答
反对 回复 2022-10-18
?
弑天下

TA贡献1818条经验 获得超7个赞

假设您的表格如下所示:


>>> df 


    A    B   C   D

0  A0   B0  C0  D0

1  A1   B1  C1  D1

2  A2   B2  C2  D2

3  A3  NaN  C3  D3

4  A4   B4  C4  D4

5  A5   B5  C5  D5

6  A6  NaN  C6  D6

7  A7  NaN  C7  D7

8  A8  NaN  C8  D8

9  A9  NaN  C9  D9


>>> table_2


      A    B

0   B20  x20

1   B19  x19

2   B18  x18

3   B17  x17

4   B16  x16

5   B15  x15

6   B14  x14

7   B13  x13

8   B12  x12

9   B11  x11

10  B10  x10

11   B9   x9

12   B8   x8

13   B7   x7

14   B6   x6

15   B5   x5

16   B4   x4

17   B3   x3

18   B2   x2

19   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 result

0  A0   B0  C0  D0   None

1  A1   B1  C1  D1     x1

2  A2   B2  C2  D2     x2

3  A3  NaN  C3  D3   A3D3

4  A4   B4  C4  D4     x4

5  A5   B5  C5  D5     x5

6  A6  NaN  C6  D6   A6D6

7  A7  NaN  C7  D7   A7D7

8  A8  NaN  C8  D8   A8D8

9  A9  NaN  C9  D9   A9D9

使用apply并不是完全理想的解决方案,但它为您提供了一些处理条件的灵活性。


查看完整回答
反对 回复 2022-10-18
  • 2 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信