Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将多列乘以多列_Python_Pandas_Database - Fatal编程技术网

Python 将多列乘以多列

Python 将多列乘以多列,python,pandas,database,Python,Pandas,Database,我有这样一个数据框: ivol Front Face Back Face Left Face Right Face Front jvol Back jvol Left jvol Right jvol row col 99 49 5

我有这样一个数据框:

              ivol  Front Face  Back Face  Left Face  Right Face  Front jvol  Back jvol  Left jvol  Right jvol  
    row col                                                                                                    
    99  49   5792          1           1          1          0        5734        5850       5791       5793   
        50   5793          1           1          0          0        5735        5851       5792       5794   
        51   5794          1           1          0          0        5736        5852       5793       5795   
        52   5795          1           1          0          0        5737        5853       5794       5796 
         ivol  Front Face  Back Face  Left Face  Right Face  Front jvol  Back jvol  Left jvol  Right jvol  
row col                                                                                                    
99  49   5792          1           1          1          0        5734        5850       5791        0
    50   5793          1           1          0          0        5735        5851        0          0   
    51   5794          1           1          0          0        5736        5852        0          0   
    52   5795          1           1          0          0        5737        5853        0          0  
我需要将某些列(
xxx Face
columns)乘以
xxx jvol
columns)并将结果重写到位(
xxx jvol
column)。结果应该是这样的:

              ivol  Front Face  Back Face  Left Face  Right Face  Front jvol  Back jvol  Left jvol  Right jvol  
    row col                                                                                                    
    99  49   5792          1           1          1          0        5734        5850       5791       5793   
        50   5793          1           1          0          0        5735        5851       5792       5794   
        51   5794          1           1          0          0        5736        5852       5793       5795   
        52   5795          1           1          0          0        5737        5853       5794       5796 
         ivol  Front Face  Back Face  Left Face  Right Face  Front jvol  Back jvol  Left jvol  Right jvol  
row col                                                                                                    
99  49   5792          1           1          1          0        5734        5850       5791        0
    50   5793          1           1          0          0        5735        5851        0          0   
    51   5794          1           1          0          0        5736        5852        0          0   
    52   5795          1           1          0          0        5737        5853        0          0  
我可以这样做:

df['Front jvol'] = df['Front Face'] * df['Front jvol']
df['Back jvol'] = df['Back Face'] * df['Back jvol']
df['Left jvol'] = df['Left Face'] * df['Left jvol']
df['Right jvol'] = df['Right Face'] * df['Right jvol']

但是,它给出了
SettingWithCopyWarning:试图在数据帧的切片副本上设置一个值。尝试使用.loc[row\u indexer,col\u indexer]=值来代替警告,我不适合使用它。

尝试使用
dataframe.assign

df.assign(
    front_jvol=df['Front Face'] * df['Front jvol'],
    back_jvol=df['Back Face'] * df['Back jvol'],
    left_jvol=df['Left Face'] * df['Left jvol'],
    right_jvol=df['Right Face'] * df['Right jvol']
)

使用
dataframe进行尝试。分配

df.assign(
    front_jvol=df['Front Face'] * df['Front jvol'],
    back_jvol=df['Back Face'] * df['Back jvol'],
    left_jvol=df['Left Face'] * df['Left jvol'],
    right_jvol=df['Right Face'] * df['Right jvol']
)

您可以使用字典理解,因为您的列有共同的前缀:

columns = ["Front", "Back", "Left", "Right"]

mapping = {f"{col} jvol":  df[f"{col} Face"] * df[f"{col} jvol"] 
            for col in columns}
最终结果:

df.assign(**mapping)

您可以使用字典理解,因为您的列有共同的前缀:

columns = ["Front", "Back", "Left", "Right"]

mapping = {f"{col} jvol":  df[f"{col} Face"] * df[f"{col} jvol"] 
            for col in columns}
最终结果:

df.assign(**mapping)

此解决方案创建新列(fron_jvol等)。如何将它们存储在现有列(Front jvol等)中?它返回一个新的dataframe对象,其中包含除新列之外的所有原始列,只需将它们重新分配给现有的
df
有见地的建议。此解决方案创建新列(fron_jvol等)。如何将它们存储在现有列(Front jvol等)中?它返回一个新的dataframe对象,其中包含除新列之外的所有原始列,只需将它们重新分配给现有的
df
深入建议。