繁体   English   中英

Pandas 使用多个数据帧执行功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM