我有一個如下所示的資料框
ID,Region,Supplier,year,output
1,ANZ,AB,2021,1
2,ANZ,ABC,2022,1
3,ANZ,ABC,2022,1
4,ANZ,ABE,2021,0
5,ANZ,ABE,2021,1
6,ANZ,ABQ,2021,1
7,ANZ,ABW,2021,1
8,AUS,ABO,2020,1
9,KOREA,ABR,2019,0
data = pd.read_clipboard(sep=',')
我的目標是
a)通過和過濾資料框year>=2021output==1
regionb) 為和的每個唯一組合生成多個 csv 檔案supplier。例如,資料ANZ應該AB存盤在單獨的檔案中。同樣,KOREA 和 ABR 資料應存盤在單獨的檔案中。這必須針對地區和供應商的每個獨特組合進行
所以,我嘗試了以下
column_name = "region"
col_name = "supplier"
region_values = data[column_name].unique()
supplier_values = data[col_name].unique()
for i in itertools.zip_longest(region_values,supplier_values,fillvalue="ANZ"):
data_output = data.query(f"{column_name} == i[0] & Year>=2021 & output == 1 & {col_name} == i[1]")
output_path = ATTACHMENT_DIR / f"{i}_ge_2021.csv"
data_output.to_csv(output_path, index=False)
但是,這會導致錯誤,如下所示
鍵錯誤:'我'
在處理上述例外的程序中,又出現了一個例外:
KeyError Traceback (最近一次呼叫最后一次) ~\Anaconda3\lib\site-packages\pandas\core\computation\scope.py in resolve(self, key, is_local) 205 # eg, df[df > 0] --> 206回傳 self.temps[key] 207,除了 KeyError 作為錯誤:
鍵錯誤:'我'
上述例外是以下例外的直接原因:
UndefinedVariableError Traceback (最近一次呼叫最后) C:\Users\aksha~1\AppData\Local\Temp/ipykernel_31264/2689222803.py in 1 for i in itertools.zip_longest(subregion_values,disti_values,fillvalue="ANZ"): -- --> 2 data_output = data.query(f"{column_name} == i[0] & Year>=2021 & output == 1 & {col_name} == i
uj5u.com熱心網友回復:
用于
@將變數傳遞給query,因為列名是正確f-string的:#i, j are same like i[0], i[1] for i, j in itertools.zip_longest(region_values,supplier_values,fillvalue="ANZ"): data_output = data.query(f"{column_name} == @i & year>=2021 & output == 1 & {col_name} == @j")您的解決方案也適用于
@:for i in itertools.zip_longest(region_values,supplier_values,fillvalue="ANZ"): data_output = data.query(f"{column_name} == @i[0] & year>=2021 & output == 1 & {col_name} == @i[1]")也可以將 f-strings 用于變數,但需要 pass
repr來表示i變數:for i in itertools.zip_longest(region_values,supplier_values,fillvalue="ANZ"): data_output = data.query(f"{column_name} == {repr(i[0])} & year>=2021 & output == 1 & {col_name} == {repr(i[1])}")轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/454560.html
標籤:Python 熊猫 数据框 熊猫-groupby 系列
上一篇:如何使用itertools獲取使用pandas的唯一行項?
下一篇:距離矩陣半正弦

