我有一個具有重復列名的資料框:
Accepted Accepted Accepted Reject Accepted Reject
ABC IJK JKL XYJ LMN UIO
BCD PQR EFG YVG GHIJ PLK
...并希望將其轉換為兩個資料幀;僅“接受”列之一,其他“拒絕”列:
df1:
Accepted Accepted Accepted Accepted
ABC IJK JKL LMN
BCD PQR EFG GHIJ
df2:
Reject Reject
XYJ UIO
YVG PLK
試過:
df1=df["Accepted"]
df2=df["Reject"]
...但這僅給出與該名稱匹配的第一列。
uj5u.com熱心網友回復:
如果選擇一列同名,則選擇 DataFrame 中所有同名的列:
df1 = df['Accepted']
df2 = df['Reject']
然后是可能的去重列:
df1.columns = [f'{x}_{i}' for i, x in enumerate(df1.columns, 1)]
df2.columns = [f'{x}_{i}' for i, x in enumerate(df2.columns, 1)]
編輯:如果只獲取第一個列名,則意味著沒有重復的列名,因此可以使用DataFrame.filter:
df1 = df.filter(like='Accepted')
df2 = df.filter(like='Reject')
uj5u.com熱心網友回復:
你也可以使用這個
df1 = df.loc[:,df.columns.isin(['accepted'])]
要么
df2 = df.loc[:,df.columns.isin(['rejected'])]
uj5u.com熱心網友回復:
不建議使用重復的列名,但無論如何:
df1 = df.loc[:, df.columns.get_loc('Accepted')]
Accepted Accepted Accepted Accepted
0 ABC IJK JKL LMN
1 BCD PQR EFG GHIJ
df2 = df.loc[:, df.columns.get_loc('Reject')]
uj5u.com熱心網友回復:
IMO 為列賦予相同的名稱不是一個好習慣。為每一列使用唯一的名稱。輸入數字或在名稱中添加唯一字符都沒有關系。讓它獨一無二
我的解決方案,先重命名列
df.columns = ['Accepted1','Accepted2','Accepted3','Reject1','Accepted4','Reject2']
df1 = df[['Accepted1','Accepted2','Accepted3','Accepted4']]
df2 = df[['Reject1','Reject2']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444017.html
上一篇:將列值與行值匹配并寫入新列
