skyhouse 发表于 2023-8-19 08:20:37

如何删除包含某个数的列

时间                出入口        人流
9                东门                100
9                西门                200
9                南门               300
10                东门                100
10                西门                200
10                南门                300
。。。。。。。。。。。。

请问大神,在python文件中,怎么包含‘东门’的行都删除?

isdkz 发表于 2023-8-19 08:21:19

你可以使用pandas库来删除包含某个数的列。首先,你需要将数据加载到一个pandas的DataFrame中。然后,你可以使用 drop 函数来删除包含特定值的行。

下面是一个示例代码:

import pandas as pd

# 加载数据到DataFrame
data = {
    '时间': ,
    '出入口': ['东门', '西门', '南门', '东门', '西门', '南门'],
    '人流':
}
df = pd.DataFrame(data)

# 删除包含'东门'的行
df = df != '东门']

# 打印结果
print(df)


输出结果为:

   时间 出入口   人流
1   9西门200
2   9南门300
410西门200
510南门300


在这个示例中,我们使用了布尔索引来选择不包含'东门'的行,并将结果保存到了同一个DataFrame中。

skyhouse 发表于 2023-8-19 08:45:52

isdkz 发表于 2023-8-19 08:21
你可以使用pandas库来删除包含某个数的列。首先,你需要将数据加载到一个pandas的DataFrame中。然后,你可 ...

很奇怪,运行后是我都要的结果,但用了这个方法后,我后续的程序涉及到调用列名[行],就会报错,可否有另外的去掉包含东门的列的方法?

skyhouse 发表于 2023-8-19 08:46:59

前后数据都是DATAFRAME的结果,列名也不变,就是无法调用了。

isdkz 发表于 2023-8-19 08:50:48

skyhouse 发表于 2023-8-19 08:45
很奇怪,运行后是我都要的结果,但用了这个方法后,我后续的程序涉及到调用列名[行],就会报错,可否有另 ...

不要把原来的覆盖掉就行了:

import pandas as pd

# 加载数据到DataFrame
data = {
    '时间': ,
    '出入口': ['东门', '西门', '南门', '东门', '西门', '南门'],
    '人流':
}
df = pd.DataFrame(data)

# 删除包含'东门'的行
df1 = df != '东门']

# 打印结果
print(df1)

skyhouse 发表于 2023-8-19 08:59:08

isdkz 发表于 2023-8-19 08:50
不要把原来的覆盖掉就行了:

试过,还是不行
File "C:\Users\Administrator\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\indexes\base.py", line 3803, in get_loc
    return self._engine.get_loc(casted_key)

base3803行的内容是
                return self._engine.get_loc(casted_key)
            except KeyError as err:
                raise KeyError(key) from err
            except TypeError:
                # If we have a listlike key, _check_indexing_error will raise
                #InvalidIndexError. Otherwise we fall through and re-raise
                #the TypeError.
                self._check_indexing_error(key)
                raise

skyhouse 发表于 2023-8-19 09:04:48

本帖最后由 skyhouse 于 2023-8-19 09:06 编辑

isdkz 发表于 2023-8-19 08:50
不要把原来的覆盖掉就行了:

完整的错误代码是这样的:
Traceback (most recent call last):
File "C:\Users\Administrator\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\indexes\base.py", line 3803, in get_loc
    return self._engine.get_loc(casted_key)
File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 165, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 2263, in pandas._libs.hashtable.Int64HashTable.get_item
File "pandas\_libs\hashtable_class_helper.pxi", line 2273, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: 1119

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\Administrator\PycharmProjects\pythonProject\venv\Scripts\计算.py", line 28, in <module>
    p = p + df['人流']
File "C:\Users\Administrator\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\series.py", line 981, in __getitem__
    return self._get_value(key)
File "C:\Users\Administrator\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\series.py", line 1089, in _get_value
    loc = self.index.get_loc(label)
File "C:\Users\Administrator\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\indexes\base.py", line 3805, in get_loc
    raise KeyError(key) from err
KeyError: 1119

isdkz 发表于 2023-8-19 09:07:52

skyhouse 发表于 2023-8-19 09:04
完整的错误代码是这样的:
Traceback (most recent call last):
File "C:%users\Administrator\Pyc ...

这个应该是相应的列名不存在导致的

skyhouse 发表于 2023-8-19 09:21:02

isdkz 发表于 2023-8-19 09:07
这个应该是相应的列名不存在导致的

是否有其他去掉东门列的方法,有的话,麻烦提供下,我再试试

isdkz 发表于 2023-8-19 11:03:50

skyhouse 发表于 2023-8-19 09:21
是否有其他去掉东门列的方法,有的话,麻烦提供下,我再试试

没有了,其它方法都是一样的原理,

至于你的代码的问题需要给出完整的代码才能确定
页: [1]
查看完整版本: 如何删除包含某个数的列