python - 在 Pandas 中查找数字列名称

标签 python pandas dataframe

我需要在 Pandas 中选择列名称中仅包含数值的列,例如:

df=
          0     1     2     3     4 window_label next_states       ids
0      17.0  18.0  16.0  15.0  15.0        ddddd           d      13.0
1      18.0  16.0  15.0  15.0  16.0        ddddd           d      13.0
2      16.0  15.0  15.0  16.0  15.0        ddddd           d      13.0
3      15.0  15.0  16.0  15.0  17.0        ddddd           d      13.0
4      15.0  16.0  15.0  17.0   NaN        ddddd           d      13.0

所以我只需要选择前五列。像这样的东西:

df[df.columns.isnumeric()]

编辑

我想到了解决方案:

digit_column_names = [num for num in list(df.columns) if isinstance(num, (int,float))]
df_new = df[digit_column_names]

不是很 pythonic 或 pandasian,但它有效。

最佳答案

尝试

df.ids = df.ids.astype('object')    
new_df = df.select_dtypes([np.number])


    0       1       2       3       4       
0   17.0    18.0    16.0    15.0    15.0    
1   18.0    16.0    15.0    15.0    16.0    
2   16.0    15.0    15.0    16.0    15.0    
3   15.0    15.0    16.0    15.0    17.0    
4   15.0    16.0    15.0    17.0    NaN     

编辑: 如果您有兴趣选择数字列名称,可以执行以下操作。

df = pd.DataFrame({0: [1,2], '1': [3,4], 'blah': [5,6], 2: [7,8]})
df.columns = pd.to_numeric(df.columns, errors = 'coerce')
df[df.columns.dropna()]

你得到

    0.0 1.0 2.0
0   1   3   7
1   2   4   8

关于python - 在 Pandas 中查找数字列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43898414/

相关文章:

python - 我的 tkinter 窗口立即关闭

python - 如何在 tkinter 中显式调整帧大小?

r - 有条件地用矩阵值替换 data.frame 列。 R 中的 VLOOKUP

从整个数据框中删除一个字符

python - 如何将 html 表转换为 pandas 数据框

python - 已安装 OpenCV 但导入时仍找不到

python - 随机短语创建器

python - 如何检索 pandas Series 对象中第 n 个元素的值?

python - Pandas Datareader 没有响应,HTTP 状态 404

python - 如何从 Pandas 数据框中删除方括号