![](/img/trans.png)
[英]How to perform calculations on a subset of a column in a pandas dataframe?
[英]Pandas DataFrame: How to remove column and perform calculations on select columns
我有一個包含 57 列的DataFrame
。 第 1 到 21 列是維度。 22 到 57 是度量。 第 1 列是日期列。 第 21 列是一個錯誤的列,導致我有重復的數據。
我想要做的是刪除第 21 列,然后在 1 到 20 相同時取 22 到 57 的最小值。
沒有理由使用 groupby,你可以使用drop
和min
要刪除第 21 列,您可以在相關列上使用drop
,按名稱刪除它:
df.drop(columns="column_21_name", inplace=True)
要在幾列之間選擇最小值,您可以使用min
:
df["min_column"] = df.iloc[:, 22:57].min(axis=0)
(首先我使用iloc
只選擇相關列,然后使用最小方法)
也許應該是 21:56(如果從 0 開始索引),取決於您如何計數。 試着看看它是否是你想要的。
之后,您在 df 中有一個新列名“min_column”,然后刪除相關列的其余部分(21 到 56)
PS - 發布問題時請遵循 StackOverflow 指南:您應該說出您已經嘗試過的內容(而不是僅僅詢問)並舉例說明您的數據框(而不是一般性地談論“第 20 列”)。 這次我決定回答,但其他社區成員可能沒有那么仁慈。
我認為以下內容將為您解決問題。 如果您願意,您可以刪除該列( df.drop(df.columns[20], axis=1, inplace=True)
),但對於這一計算而言,這不是必需的。 按前 21 列對 groupbys 進行編碼,然后為每個組合從第 22 列到 57 列中取最小值。 如果您決定刪除該列, iloc
索引將發生變化。 iloc[a:b]
從 a 到 b-1。
df.iloc[:, 21:57].groupby(df.iloc[:, :21]).min()
只需要刪除列然后刪除重復項。 對不起大家。
df.drop(columns="lineItemBudget", inplace=True)
df.drop_duplicates(就地=真)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.