假設我們有一個 DataFrame 和一系列它的列標簽,兩者(幾乎)共享一個公共索引:
df = pd.DataFrame(...)
s = df.idxmax(axis=1).shift(1)
如何獲取給定一系列列的單元格,使用連接系列中的相應列標簽從每一行獲取值?我想它會是:
values = df[s] # either
values = df.loc[s] # or
在我的示例中,我希望具有低于最大行值的值(我正在做一個窮人的 ML :))
但是我找不到任何按列選擇單元格的界面。有什么想法嗎?
同時我使用這個可怕的片段:
def get_by_idxs(df: pd.DataFrame, idxs: pd.Series) -> pd.Series:
ts_v_pairs = [
(ts, row[row['idx']])
for ts, row in df.join(idxs.rename('idx'), how='inner').iterrows()
if isinstance(row['idx'], str)
]
return pd.Series([v for ts, v in ts_v_pairs], index=[ts for ts, v in ts_v_pairs])
uj5u.com熱心網友回復:
我想你需要dataframe lookup
v = s.dropna()
v[:] = df.to_numpy()[range(len(v)), df.columns.get_indexer_for(v)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/453440.html
上一篇:如何在不添加新列的情況下合并我的資料框以彌補丟失的資料?
下一篇:在pandas中處理多種模式
