pandas 根据df的列名与具有重复名称的列名列表之间的匹配,对panda Dataframe 进行子集化

tkclm6bt  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(156)

我有一个列名重复的列表,例如:list = ['col1', 'col3', 'col1']
以及一些列名与列表项匹配的panda Dataframe :

col1    col2    col3    col4
 a       c        e       g
 b       d        f       h

我希望对 Dataframe 进行子集化,以便返回的df将具有col1、col2,并且再次具有col1,如下所示:

col1   col2     col1
   a    c        a
   b    d        b

我试过了

names = ['col1', 'col4', 'col1']
df = pd.DataFrame({'col1': ['a','b'],'col2': ['c', 'd'], 'col3': ['e', 'f'], 'col4': ['g', 'h']} )
df2 = df[df.columns & names]
df2

它只返回col1和col4,而不复制col1:

col1    col4
  a      g
  b      h
w8rqjzmb

w8rqjzmb1#

只需向DataFrame索引操作符传递一个列表,其中包含要提取的所有列(包括重复列)。

# The names of the columns to be extracted, including duplicates. 
names = ['col1', 'col2', 'col1']

# Create a new DataFrame made up only of the columns from the list.
df2 = df[names]

print(df2)

输出:

col1 col2 col1
0    a    c    a
1    b    d    b

相关问题