【问题标题】:Showing specific columns in a dataframe based on list根据列表显示数据框中的特定列
【发布时间】:2020-11-14 02:06:48
【问题描述】:

我有以下数据框

df = pd.DataFrame({'Name': ['Sally', 'Fred', 'Tim'],
               'Random Text - Amish': [1,1,1], 
               'Text is Random - Matt': [1,0,1], 
               'More Random Text - Luke': [1,0,0],
               'OMG this text is random - Phil': [0,0,1], 
               })

我希望提供一个列表并根据该列表显示相关列。例如,如果我提供了list = ['Amish', 'Luke'],它将只显示那些列。真实的数据框非常大,所以我需要为其提供一个列表,而不是手动指定哪些列。

【问题讨论】:

  • 你为什么不写一些代码来做到这一点?
  • 嗨 mkrieger,因为我不知道代码。我仍在学习并意识到我需要真正开始学习我的列表理解。希望有一天能到那里:)

标签: python pandas list dataframe sorting


【解决方案1】:

这里有一个解决方案:

l = ['Amish', 'Luke']
columns = [c for c in df.columns for word in l if word in c]
df[columns]

输出是:

   Random Text - Amish  More Random Text - Luke
0                    1                        1
1                    1                        0
2                    1                        0

【讨论】:

  • 看起来我需要重新理解我的列表理解。感谢 Rakesh 和 Roy2012
【解决方案2】:

df.columns 上使用str.endswith

例如:

df = pd.DataFrame({'Name': ['Sally', 'Fred', 'Tim'],
               'Random Text - Amish': [1,1,1], 
               'Text is Random - Matt': [1,0,1], 
               'More Random Text - Luke': [1,0,0],
               'OMG this text is random - Phil': [0,0,1], 
               })
lst = ('Amish', 'Luke')
ndf = df[[c for c in df.columns if c.endswith(lst)]]
print(ndf)

输出:

   Random Text - Amish  More Random Text - Luke
0                    1                        1
1                    1                        0
2                    1                        0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2022-08-13
    相关资源
    最近更新 更多