我有一個如下所示的資料框
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
我正在嘗試生成region和supplier值的獨特組合。而不是 groupby,我想通過zip_longest.
所以,我嘗試了以下
for i,j in itertools.zip_longest(region_values,supplier_values,fillvalue="ANZ"):
print(i,j)
但上述結果導致i and j.
我想從特定行中獲取每個獨特的組合。我不希望乘以/生成資料中不存在的新組合
目前,這會導致輸出不正確,如下所示
ANZ AB
AUS ABC #incorrect to generating new combinations like this
KOREA ABE #incorrect to generating new combinations like this
ANZ ABQ
ANZ ABW
ANZ ABO
ANZ ABR
我希望我的輸出如下所示
ANZ AB
ANZ ABC
ANZ ABE
ANZ ABQ
ANZ ABW
AUS ABO
KOREA ABR
我使用 zip_longest 因為在此之后,我想使用 zip 物件的輸出來使用 2 列過濾資料框
uj5u.com熱心網友回復:
如果排序很重要,則需要同時洗掉兩列的重復項,因此unique需要drop_duplicates:
column_name = "Region"
col_name = "Supplier"
df = data.drop_duplicates([column_name, col_name])
for i,j in zip(df[column_name],df[col_name]):
print(i,j)
ANZ AB
ANZ ABC
ANZ ABE
ANZ ABQ
ANZ ABW
AUS ABO
KOREA ABR
uj5u.com熱心網友回復:
看起來你想要一個集合:
set(zip(df['Region'], df['Supplier']))
輸出:
{('ANZ', 'AB'),
('ANZ', 'ABC'),
('ANZ', 'ABE'),
('ANZ', 'ABQ'),
('ANZ', 'ABW'),
('AUS', 'ABO'),
('KOREA', 'ABR')}
對于迭代:
for r, s in set(zip(df['Region'], df['Supplier'])):
pass
如果訂單很重要,請使用dict.from_keys:
for a,b in dict.fromkeys(zip(df['Region'], df['Supplier'])).keys():
print(a,b)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/454559.html
標籤:Python 熊猫 数据框 麻木的 熊猫-groupby
