Python pandas - 根据dataframe1中的另一列将dataframe1中的列与dataframe2中的列分开

标签 python python-3.x pandas dataframe

日期框1

df = pd.DataFrame(SQL_Query, columns=[ X,Y . . . . Currency,Amount] 

Index         X             Y  ...         Currency          Amount
0             74            1  ...         USD               100
1             75            1  ...         EUR               5000
2             76            1  ...         AUD               300
3             79            1  ...         EUR               750

[1411137 rows x 162 columns]

大型 SQL 查询,因此我避免写出所有列。

df1=pd.read_excel(r`FX_EUR.xlsx)

Index       Currency      FX
0             AUD      1.61350
1             BGN      1.95580
2             BRL      4.51450
3             CAD      1.45830
4             CHF      1.09280

所以我想要实现的是在 DF1 中进行查找以查看使用哪种货币,然后将“DF1 金额”列与“DF2 FX”列分开,并针对 DF1 中的所有行进行划分。通过创建第三个 DF3 或创建一个名为 Amount_EUR 的新列 i DF1。

关于如何编写这段代码有什么想法吗?

最佳答案

您可以使用合并来构建一个包含正确FX(相同货币)且索引与df相同的系列。那么除法就很简单了:

fx = df.merge(df1, 'left', on='Currency')['FX']
df.loc[~ fx.isna(),'EUR_Amount'] = df.loc[~ fx.isna()]['Amount']/fx.loc[~ fx.isna()]

根据您的示例数据,它给出:

        X  Y  ... Currency  Amount  EUR_Amount
Index                                         
0      74  1  ...      USD     100         NaN
1      75  1  ...      EUR    5000         NaN
2      76  1  ...      AUD     300  185.931205
3      79  1  ...      EUR     750         NaN

关于Python pandas - 根据dataframe1中的另一列将dataframe1中的列与dataframe2中的列分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60317953/

相关文章:

python - 使用 Pandas 读取 Access 表的最简单方法?

python - 加快顺序检查点是否在 Python 中的形状

python - Odoo 11 : get cron id or name inside the called method for ir. 手动创建的 cron 不仅仅是从 XML 创建的

python - 如何使用sqlautocode?

Python 3.x 意外的 TypeError 电话簿

python - BaseHTTPRequestHandler 在由 pythonw.exe 3.1 运行时挂起

python-3.x - Pandas 数据框根据组替换列值

python - 替换文件中的所有正则表达式匹配项

python - Pandas 日期时间格式化与时区转换

python - 访问文字上的属性适用于所有类型,但不适用于 `int` ;为什么?