python - 为熊猫中的所有列生成列矩阵
问题描述
我有一个由 6 列组成的数据框。生成执行以下操作的矩阵的最快方法是什么:
步骤 1) col1*col1a , col2*col2a, col3*col3a, col4*col4a
步骤 2) col_new = (col1*col1a)-col2*col2a)/(col1a-col2a)
使用 for 循环是其中一种选择 - 但有什么方法可以更快地解决这个问题。
import pandas as pd
df=pd.DataFrame()
df['col1']=[100,200,300,400,500]
df['col1a']=[6,71,8,90,10]
df['col2']=[600,700,800,1900,100]
df['col2a']=[6,17,8,9,10]
df['col3']=[100,220,300,440,500]
df['col3a']=[1,22,3,44,5]
df[1x2]=(df['col1']*df['col1a']-df['col2']*df['col2a'])/(df['col1a']-df['col2a'])
我需要有 1x3,1x4,1x5,2x3,2x4 等的列组合...
解决方案
这是我将如何处理它:
def new_col(df, col1, col2):
"""
Add a new column, modifying the dataframe inplace.
col1: int
column counter in the first column name
col2: int
column counter in the second column name
"""
nr = (
df.loc[:, f"col{col1}"] * df.loc[:, f"col{col1}a"]
- df.loc[:, f"col{col2}"] * df.loc[:, f"col{col2}a"]
)
dr = df.loc[:, f"col{col1}a"] - df.loc[:, f"col{col2}a"]
df.loc[:, f"col{col1}X{col2}"] = nr / dr
我将使用所需的列组合调用此函数。例如。
new_col(df, 1, 2)
输出:
从循环发出调用。
推荐阅读
- json - Scrapy:从嵌入在 HTML 中的 JSON 响应中提取数据
- html - 使div的标题变粘,并占据div的宽度
- java - 动态 JPA 查询
- itext7 - IText 7 SignatureUtil - 签名文档获得“没有关联 PdfWriter 用于制作间接”
- outlook - Outlook VSTO - 加载数据时禁用 AppointmentItem 窗口
- reactjs - 如何将 React 中的 localStorage 代码转换为 React Native 中的 AsyncStorage?
- reactjs - 反应太多的重新渲染,不确定原因
- sql - PostgreSQL:按时间间隔聚合记录
- python - 如何仅在一个单词 Python regex 之后获取特定数字?
- python - 你如何在 python 中使用 numpy 数组进行 SIMD 处理?