Python 如何删除具有负值的数据帧中的所有行?

Python 如何删除具有负值的数据帧中的所有行?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个混合了列数据类型、float64和object的数据帧 我需要动态删除所有具有任何负值的行。以下是我到目前为止的情况: df = df[(df > 0).all(axis=1)] 但由于某些列不是数字,它基本上会擦除整个df 如何构建这一点,只考虑数值列?有太多的列需要手动为每一列执行类似的操作,但如果我必须按1:1进行操作,则此操作确实有效: df = df.drop(df[df['col1'] < 0].index, inplace=True) df=df.drop

我有一个混合了列数据类型、float64和object的数据帧

我需要动态删除所有具有任何负值的行。以下是我到目前为止的情况:

 df = df[(df > 0).all(axis=1)]
但由于某些列不是数字,它基本上会擦除整个df

如何构建这一点,只考虑数值列?有太多的列需要手动为每一列执行类似的操作,但如果我必须按1:1进行操作,则此操作确实有效:

df = df.drop(df[df['col1'] < 0].index, inplace=True)
df=df.drop(df[df['col1']<0]。索引,inplace=True)
每当我尝试将其放入循环语句时,我都会在比较字符串和int时出错

我只想扫描每一行的每一列,如果我检测到一个数字,它是负数,就删除整行。我觉得这太难了。

用于只获取数字列,并保留代码

df[df.select_dtypes(include=[np.number]).ge(0).all(1)]

例如:

df = pd.DataFrame({'col1': [1,2,3,4],
                   'col2': [-1, -2, 3, 4],
                   'col3': ['a','b','c','d'],
                   'col4': [1,2,3,4]})


   col1  col2 col3  col4
0     1    -1    a     1
1     2    -2    b     2
2     3     3    c     3
3     4     4    d     4
给予

    col1    col2    col3    col4
2   3       3       c       3
3   4       4       d       4