我有一個資料框,如果一個單元格的值不是“。” 然后我需要 python 回傳單元格的列標題和校園號。

最終結果應該是包含列標題和校園編號的新資料框或串列。單元格內的值是什么并不重要,只要它不是“。”
我嘗試使用以下 for 回圈陳述句: df 是原始資料框 df2 是應該具有列名和校園名稱的新資料框
for i in df.iterrows():
if df[i] == ".":
i = i 1
else:
df2[i] = df[i].value "" df.col()
i = i 1
uj5u.com熱心網友回復:
通過堆疊減少問題的維數使您可以更輕松地查詢索引。
temp = df.set_index('Campus').stack()
result_list = temp.loc[temp!='.'].index.values
uj5u.com熱心網友回復:
我發現最簡單的方法是運行
df2 = df.where(df!='.')
df2 = df2.dropna()
第一行復制了整個 df,但替換了所有的 '.' 使用 NaN,可以使用 dropna() 洗掉。
uj5u.com熱心網友回復:
您可以嘗試用 NaN 替換不需要的值然后堆疊嗎?
df.replace('.', pd.NA).stack().index.to_list()
例子:
# input
A B C
0 . 2 .
1 1 . .
2 . 3 .
# output
[(0, 'B'), (1, 'A'), (2, 'B')]
要首先擁有列,請使用:
df.replace('.', pd.NA).T.stack().index.to_list()
# [('A', 1), ('B', 0), ('B', 2)]
或者,對于自上而下的順序:
df.replace('.', pd.NA).stack().swaplevel().index.to_list()
# [('B', 0), ('A', 1), ('B', 2)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453871.html
