例如:我有一個包含類似列的資料框
| 鏡片 | 普通產品 102 | 普通產品 105 | 普通產品 107 |
|---|---|---|---|
| 第一的 | 1 | 3 | 4 |
| 第二 | 2 | 5 | 3 |
| 第一的 | 3 | 7 | 2 |
| 第二 | 4 | 8 | 1 |
所以我需要做一個模式匹配 (^plain-prod.*) 并選擇匹配的所有 3 列并創建新的列 plain_sum 有如何使用 pyspark 或 pandas 實作這一點的總和。
| 鏡片 | 普通產品 102 | 普通產品 105 | 普通產品 107 | 簡單的總和 |
|---|---|---|---|---|
| 第一的 | 1 | 3 | 4 | 8 |
| 第二 | 2 | 5 | 3 | 10 |
| 第一的 | 3 | 7 | 2 | 12 |
| 第二 | 4 | 8 | 1 | 13 |
uj5u.com熱心網友回復:
用 Pandas 試試這個方法(df是你的資料框):
df['plain_sum'] = df.filter(regex='^plain-prod.*').sum(axis=1)
uj5u.com熱心網友回復:
你可以在 PySpark 中做這樣的事情:
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
spark = SparkSession.builder.getOrCreate()
data = [
{"lens": "First", "plain-prod 102": 1, "plain-prod 105": 3, "plain-prod 107": 4},
{"lens": "Second", "plain-prod 102": 2, "plain-prod 105": 3, "plain-prod 107": 4},
]
df = spark.createDataFrame(data)
df = df.withColumn(
"plain_sum", sum([F.col(x) for x in df.columns if "plain-prod" in x])
)
結果:
------ -------------- -------------- -------------- ---------
|lens |plain-prod 102|plain-prod 105|plain-prod 107|plain_sum|
------ -------------- -------------- -------------- ---------
|First |1 |3 |4 |8 |
|Second|2 |3 |4 |9 |
------ -------------- -------------- -------------- ---------
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/366356.html
