繁体   English   中英

如果数据框中不存在列,则返回空列

[英]Return Empty column if column does not exist in dataframe

我创建了一个数据框df如下:

Type = ['A', 'B', 'C', 'D']
Size = [72,23,66,12]
df = pd.DataFrame({'Type': Type, 'Size': Size})

我可以使用以下方法提取任何现有列:

df_count = df['Size']

但是,如果数据框太大,我不知道该列是否存在于 df 中。 在这种情况下,如果我调用一个列,例如df['Shape']如下:

df_null = df['Shape']

它引发KeyError 但是我希望df_null应该得到一个名为"Shape"的空列。

以类似于以下的模式使用DataFrame.get

In [3]: df.get('Size', pd.Series(index=df.index, name='Size'))
Out[3]:
0    72
1    23
2    66
3    12
Name: Size, dtype: int64

In [4]: df.get('Shape', pd.Series(index=df.index, name='Shape'))
Out[4]:
0   NaN
1   NaN
2   NaN
3   NaN
Name: Shape, dtype: float64

或者通过创建一个函数来概括:

In [5]: get_column = lambda df, col: df.get(col, pd.Series(index=df.index, name=col))

In [6]: get_column(df, 'Size')
Out[6]:
0    72
1    23
2    66
3    12
Name: Size, dtype: int64

In [7]: get_column(df, 'Shape')
Out[7]:
0   NaN
1   NaN
2   NaN
3   NaN
Name: Shape, dtype: float64

另一种选择是使用reindexsqueeze

In [8]: df.reindex(columns=['Size']).squeeze()
Out[8]:
0    72
1    23
2    66
3    12
Name: Size, dtype: int64

In [9]: df.reindex(columns=['Shape']).squeeze()
Out[9]:
0   NaN
1   NaN
2   NaN
3   NaN
Name: Shape, dtype: float64

IIUC,试试这个

col = 'Shape'
df_null = pd.Series() if col not in df.columns else df[col]

输出:

Series([], dtype: float64)

要么

col = 'Size'
df_null = pd.Series() if col not in df.columns else df[col]

输出:

0    72
1    23
2    66
3    12
Name: Size, dtype: int64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM