我正在使用 read_excel 讀取檔案,我需要列出列大于零的每一行和每一列。
excel內容類似如下:
fruit | america_inv | asia_inv | aurope_inv
apple | 0.0 | 2.0 | 0.0
banana | 1.0 | 0.0 | 0.0
orange | 2.0 | 1.0 | 3.0
預期的輸出是這樣的:
apple, asia_inv
banana, america_inv
orange, america_inv
orange, asia_inv
orange, europe_inv
任何想法?
我在第一步被凍結:
import pandas as pd
#Read excel file
df_excel_data = pd.read_excel('fruits.xlsm', sheet_name='all_fruits', usecols="C:BB", header=7)
#Normalize header
df_excel_data.columns = df_excel_data.columns.str.strip().str.lower().str.replace(' ', '_', regex=True).str.replace('(', '', regex=True).str.replace(')', '', regex=True).str.replace('\n', '_', regex=True)
df = pd.DataFrame(df_excel_data)
uj5u.com熱心網友回復:
您可以使用melt:
out = (df.melt('fruit', var_name='continent', ignore_index=False)
.loc[lambda x: x.pop('value') > 0]
.sort_index(ignore_index=True))
print(out)
# Output
fruit continent
0 apple asia_inv
1 banana america_inv
2 orange america_inv
3 orange asia_inv
4 orange aurope_inv
或者(也許更容易理解):
out = (df.melt('fruit', var_name='continent', ignore_index=False)
.query('value > 0')[['fruit', 'continent']]
.sort_index(ignore_index=True))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484969.html
上一篇:dataprep.edaTypeError:Pleaseprovidenpartitionsasanint,ormayasNoneifyouspecifiedchunksize
