1 回答

TA貢獻1802條經(jīng)驗 獲得超10個贊
假設(shè)我們有以下數(shù)據(jù)框:
df = pd.DataFrame({0: {0: 1, 1: 2, 2: 3, 3: 4},
?1: {0: 'Tim', 1: 'Tom', 2: 'Alex', 3: 'May'},
?2: {0: 'Tim', 1: 'Tom', 2: 'Alex', 3: 'May'},
?3: {0: 'random', 1: 'tree', 2: 'apple', 3: 'file'},
?4: {0: 'na', 1: '', 2: 'apple', 3: 'cheese'},
?5: {0: 'A', 1: 'A', 2: 'B', 3: 'C'},
?6: {0: 'A', 1: 'A', 2: 'B', 3: 'C'}})
df
df.columns = pd.MultiIndex.from_tuples([('id',''), ('name', 'df1'), ('name', 'df2'),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ('secret', 'df1'), ('secret', 'df2'), ('group', 'df1'), ('group', 'df2')])
df
In[1]:?
? id? name? ? ? ? secret? ? ? ? ?group? ??
? ? ? ?df1? ?df2? ? ?df1? ? ?df2? ?df1 df2
0? 1? ?Tim? ?Tim? random? ? ? na? ? ?A? ?A
1? 2? ?Tom? ?Tom? ? tree? ? ? ? ? ? ?A? ?A
2? 3? Alex? Alex? ?apple? ?apple? ? ?B? ?B
3? 4? ?May? ?May? ? file? cheese? ? ?C? ?C
您可以用于
np.select()
根據(jù)條件返回結(jié)果。.droplevel()
退出多索引數(shù)據(jù)框并
df.loc[:,~df.columns.duplicated()]
刪除重復的列。由于我們將答案設(shè)置為df1
列,df2
因此不需要列。
df[('secret', 'df1')] = np.select([(df[('group', 'df2')] != 'A') &?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(df[('secret', 'df1')] != df[('secret', 'df2')])], #condition 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [df[('secret', 'df1')] + ' > ' + df[('secret', 'df2')]], #result 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?df[('secret', 'df2')]) #alterantive if conditions not met
df.columns = df.columns.droplevel(1)
df = df.loc[:,~df.columns.duplicated()]
df
Out[1]:?
? ?id? name? ? ? ? ?secret group
0? ?1? ?Tim? ? ? ? ? ? ?na? ? ?A
1? ?2? ?Tom? ? ? ? ? ? ? ? ? ? A
2? ?3? Alex? ? ? ? ? apple? ? ?B
3? ?4? ?May? file > cheese? ? ?C
添加回答
舉報