我发现another question在这个网站是非常相关的。我使用了该代码并将其应用于您的问题。我还在列名中添加了一个浮点数,以确保它与int
和float
一起工作。它看起来像:
import pandas as pd
df = pd.DataFrame({0: [17.0, 18, 16, 15, 15],
1: [18.0, 16, 15, 15, 16],
2.0: [16.0, 15, 15, 16, 15],
3: [15.0, 15, 16, 15, 17],
4: [15.0, 16, 15, 17, None],
'window_label': ['ddddd' for i in range(5)],
'next_states': ['d' for i in range(5)],
'ids': [13.0 for i in range(5)]})
num_cols = []
for col in df.columns.values:
try:
float(col)
num_cols.append(col)
except ValueError:
pass
print(df[num_cols])
,结果是这样的:
0 1 2.0 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
EDIT1:我只是意识到,你可以保持数字确定在发电机的功能,并有一个稍快/肯定少了内存密集型做同样事情的方法。
import pandas as pd
def is_num(cols):
for col in cols:
try:
float(col)
yield col
except ValueError:
continue
df = pd.DataFrame({0: [17.0, 18, 16, 15, 15],
1: [18.0, 16, 15, 15, 16],
2.0: [16.0, 15, 15, 16, 15],
3: [15.0, 15, 16, 15, 17],
4: [15.0, 16, 15, 17, None],
'window_label': ['ddddd' for i in range(5)],
'next_states': ['d' for i in range(5)],
'ids': [13.0 for i in range(5)]})
print(df[[col for col in is_num(df.columns.values)]])
产生与上述完全相同的结果,虽然它的可读性稍差。
尝试'df._get_numeric_data()' – gobrewers14
@ gobrewers14,试过了,也给出'ids'列,这是不需要的。 –
那么你的问题还不清楚。 “我需要选择Pandas中只包含数字值的列。” 'ids'是数字。 – gobrewers14