我有一个具有重复列名的dataframe:
Accepted    Accepted    Accepted    Reject    Accepted    Reject
ABC         IJK         JKL         XYJ       LMN         UIO
BCD         PQR         EFG         YVG       GHIJ        PLK...and希望将其转换为两个数据格式;一个是“接受”列,另一个是“拒绝”列:
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"]..。但这只会给出与此名称匹配的第一列。
发布于 2022-03-15 06:03:23
如果选择一个名称相同的列,则选择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')发布于 2022-03-15 06:28:10
您也可以使用这个
df1 = df.loc[:,df.columns.isin(['accepted'])]或
df2 = df.loc[:,df.columns.isin(['rejected'])]发布于 2022-03-15 06:56:17
不建议使用重复的列名,但无论如何:
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')]https://stackoverflow.com/questions/71477671
复制相似问题