![](/img/trans.png)
[英]How to rearrange rows in dataframe and obtain a new columns having percentage difference of 2 other columns in pandas?
[英]Percentage difference every 2 columns of pandas dataframe and generate a new column
我有一個大的 pandas dataframe 類似於下面的:
Number A_white A_black B_white B_black ... AUV_white AUV_black
140 0.010 0.567 0.001 0.0075 1.0 1.5
150 100 200 500 1000 ... 500 1000
我正在嘗試使用以下數據生成一個新的 dataframe:
Number A B ... AUV
140 193.068 152.941 40
150 66.667 66.667 66.667
在新的 dataframe 中:
new_df['A'] = (old_df.A_white - df.A_black).abs() / ((old_df.A_white + df.A_black)/2) * 100
有一個類似的解決方案: pandas dataframe 任意兩列的百分比差值
但是我有一個很大的 dataframe 並且不能用列名來做。 有沒有一種方法可以使用loc
或iloc
來獲得結果?
對於新的 dataframe 的列名稱,我有:
col_names = old_df.columns
col_names = col_names.tolist()
col_names = [x.replace("_white", "") for x in col_names]
del col_names[1::2]
您可以將索引轉換為 MultiIndex 並使用xs
的高級索引:
# set non white/black columns aside
df = df.set_index('Number')
# split to MultiIndex
df.columns = pd.MultiIndex.from_tuples(df.columns.str.split('_').to_list())
# select cross-sections
w = df.xs('white', level=1, axis=1)
b = df.xs('black', level=1, axis=1)
# perform the computation
df2 = (abs(w-b)/(w+b)*200).reset_index()
Output:
Number A B AUV
0 140 193.067591 152.941176 40.000000
1 150 66.666667 66.666667 66.666667
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.