[英]how to perform outer merge on multiple DataFrames using pandas in python
[英]Pandas perform functions using multiple dataframes
我在 Python 中有两个 pandas 数据帧,一个只有一行数据。 另一个有很多行。 我想通过第一行的每一行 go 并从中减去第二行。 然后我想将结果存储在第二个大小的 dataframe 中。 第一个是
df1 = pd.DataFrame({"Amounts": [1.1, 2.2, 3.3]})
第二个是
df2 = pd.DataFrame({"A": [500, 600, 700, 800, 900],
"B": [250, 750, 900, 500, 200],
"C": [450, 125, 600, 200, 800]})
我试图从另一个中减去一个(从 A 中减去 1.1,从 B 中减去 2.2,从 C 中减去 3.3)以获得以下 output:
A B C
[498.9, 247.8, 446.7],
[598.9, 747.8, 121.7],
[698.9, 897.8, 596.7],
[798.9, 497.8, 196.7],
[898.9, 197.8, 796.7]
并将其另存为 dataframe。 您能提供的任何帮助都会非常有帮助。 如果您还可以提供类似算术的答案(即乘法而不是减法),则可以加分
您需要将df1
转换为 Series 和 numpy 数组以绕过索引 alignment:
df3 = df2.sub(df1['Amounts'].to_numpy(), axis=1)
有很多选择,比如完整的 numpy:
df3 = df2.sub(df1.to_numpy().ravel(), axis=1)
或完整的 pandas:
df3 = df2.sub(df1['Amounts'].set_axis(df2.columns), axis=1)
output:
A B C
0 498.9 247.8 446.7
1 598.9 747.8 121.7
2 698.9 897.8 596.7
3 798.9 497.8 196.7
4 898.9 197.8 796.7
import pandas as pd
import numpy as np
df1 = pd.DataFrame({"Amounts": [1.1, 2.2, 3.3]})
df2 = pd.DataFrame({"A": [500, 600, 700, 800, 900],
"B": [250, 750, 900, 500, 200],
"C": [450, 125, 600, 200, 800]})
final = pd.DataFrame()
if len(df1) != len(df2.columns):
pass
else:
for i in range(len(df1)):
final[df2.columns[i]]=df2[df2.columns[i]].astype(float)-df1['Amounts'] [i].astype(float)
final
A B C
0 498.9 247.8 446.7
1 598.9 747.8 121.7
2 698.9 897.8 596.7
3 798.9 497.8 196.7
4 898.9 197.8 796.7
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.