我创建了一个数据帧df,如下所示:
Type = ['A', 'B', 'C', 'D']
Size = [72,23,66,12]
df = pd.DataFrame({'Type': Type, 'Size': Size})
我可以使用以下方法提取任何现有列:
df_count = df['Size']
但是,如果数据框太大,我也不知道该列是否存在于df中。如果我呼叫一个列,例如df ['形状']如下:
df_null = df['Shape']
它返回一个"键错误"。但是我希望df_null应该得到一个名为" Shape"。
的空列答案 0 :(得分:5)
以类似于:
的模式使用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
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
答案 1 :(得分:3)
IIUC,试试这个
col = 'Shape'
df_null = pd.Series() if col not in df.columns else df[col]
输出:
Series([], dtype: float64)
OR
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