簡體   English   中英

在 pandas 數據框中添加新的計算列

[英]Adding new calculated columns in pandas data frame

假設我有一個小數據框:

import pandas as pd
df = pd.DataFrame(
         [
             ["A",  28, 726, 120],
             ["B",  28, 1746, 250],
             ["C", 543, 15307, 4500]
         ],
         columns = ["case", "x", "y", "z"]
    )

我知道如何計算列(例如):

cols = list(df.columns)
df['total'] = df.loc[:, cols].sum(axis=1)

現在我想appenddf其他 3 列x_pct, y_pct, z_pct ,包含x,y,z相對於total的百分比,也就是說: x_pct=100*(x/total)等。

之后,我還想append 3 個新列x_pctr, y_pctr, z_pctr ,包含四舍五入的百分比: round(x_pct)等。

雖然我當然知道如何單獨計算x_pct, x_pctr等,但我找不到如何簡單地表示一次運行 3 個“百分比列”的計算(除了計算 3 個“舍入列” “一次運行),也不構建包含先前列結果列的“全局”數據框......

我有點困惑,因為我猜apply(lambda...)會完成這項工作,只要我知道如何使用它? 你能讓我離開那里嗎?

嘗試:

df[["x_pctr", "y_pctr", "z_pctr"]] = (
    df.loc[:, "x":].div(df.sum(axis=1), axis=0) * 100
).round()
print(df)

印刷:

  case    x      y     z  x_pctr  y_pctr  z_pctr
0    A   28    726   120     3.0    83.0    14.0
1    B   28   1746   250     1.0    86.0    12.0
2    C  543  15307  4500     3.0    75.0    22.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM