无需硬编码从数据帧中提取列

2024-09-18 15:21:58 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以在不指定所有列的情况下从数据帧中提取列的子集。e、 我有数据帧和foll。柱: str_ID, num_ID, 1990, 1991, 1992, 1993, 1994, 1995我想从1990开始提取列。没有硬编码我怎么做?你知道吗

df.columns.values
array(['str_ID', 'num_ID', 1990, 1991, 1992, 1993, 1994, 1995], dtype=object)

Tags: columns数据方法id编码dfobject情况
2条回答

另一个选项,如果标题是字符串,并且1900年之前没有年份:

df = pd.DataFrame({'str_ID':[4,2,4,5,5,4],
               'num_ID': [4,2,4,5,5,4],
               '1990':[4,3,1,2,2,4],
               '1991':[1,2,4,5,5,3],
               '1992':[4,3,2,2,2,4],
               '1993':[4,3,2,2,2,4]})
print df
   1990  1991  1992  1993  num_ID  str_ID
0     4     1     4     4       4       4
1     3     2     3     3       2       2
2     1     4     2     2       4       4
3     2     5     2     2       5       5
4     2     5     2     2       5       5
5     4     3     4     4       4       4

columns = [x for x in df.columns if (x>=1990 and x.isdigit())]
df = df[columns]
print df

输出:

   1990  1991  1992  1993
0     4     1     4     4
1     3     2     3     3
2     1     4     2     2
3     2     5     2     2
4     2     5     2     2
5     4     3     4     4

您可以对数据框的列使用条件理解(假设年份的列标题是整数):

df[sorted(col for col in df if isinstance(col, int) and col >= 1990)]

此选项过滤大于或等于1990的整数列,并按排序顺序返回结果。你知道吗

相关问题 更多 >