簡體   English   中英

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,你可以使用dropmin

要刪除第 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.

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