[英]Adding calculated columns and then just new data to a Pandas dataframe iteratively (python 3.7.1)
[英]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)
現在我想append到df
其他 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.