我有一個帶有標簽和值的 DF,如下所示:
df = pd.DataFrame({'labels' : ['A','A', 'B', 'C', 'C'],'val' : [1, 2, 3, 4, 5]})
現在,我想計算標準差。開發如下:
對于每一行:
帶有 A 的行:(B 和 C 標簽的標準偏差)(前 2 行將具有所有其他行的標準偏差)
帶有 B 的行:(A 和 C 標簽的標準偏差)(第三行將具有所有其他行的標準偏差)
帶 C 的行:(A 和 B 標簽的標準偏差)(最后兩行將具有所有其他行的標準偏差)
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
更新 要優化,請為每個標簽預先計算 std dev:
df = pd.DataFrame({'labels' : ['A','A', 'B', 'C', 'C'],'val' : [1, 2, 3, 4, 5]})
labels = df.labels.unique()
std_map = {l:df[df.labels != l]["val"].std() for l in labels}
df["std_dev"] = df["labels"].apply(lambda l: std_map[l])
迭代資料框并使用其他標簽過濾行并計算標準偏差:
df = pd.DataFrame({'labels' : ['A','A', 'B', 'C', 'C'],'val' : [1, 2, 3, 4, 5]})
df["std_dev"] = df.apply(lambda row: df[df.labels != row["labels"]]["val"].std(), axis=1)
[Out]:
labels val std_dev
0 A 1 1.000000
1 A 2 1.000000
2 B 3 1.825742
3 C 4 1.000000
4 C 5 1.000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/535592.html
標籤:Python熊猫数据框
上一篇:在PysparkDataFrame中獲取單行值的不同計數
下一篇:參差不齊的串列到資料框
