python - 检查表的特定列在 python 中是否为空,其中整个表内容存储在一个变量中

标签 python python-3.x pandas

我有一个看起来像这样的表:


         id  ConsumerID                                    StoredFileLinks                                           Response  ... Active Archived CreatedDate         UpdatedDate
0     14663         264                                                 []  {"success": true, "message": "Device has passe...  ...      1        0        None 2019-11-14 10:54:56
1     14662         264                                                 []  {"success": true, "message": "Device detected ...  ...      1        0        None 2019-11-14 10:54:22
2     14661         264                                                 []  {"success": true, "message": "Device has passe...  ...      1        0        None 2019-11-14 10:53:01
3     14660       22918                                                 []  {"success": true, "message": "Device has passe...  ...      1        0        None 2019-11-14 09:27:15
4     14658       22918                                                 []  {"success": true, "message": "Device detected ...  ...      1        0        None 2019-11-14 09:20:05
5     14656          -5                                                 []  {"success": true, "message": "Device detected ...  ...      1        0        None 2019-11-14 08:20:29
6     14655          -5  [{"OriginalImage": "s3://crackd/inference_v2/I...  {"success": true, "message": "Device detected ...  ...      1        0        None 2019-11-14 08:13:46
7     14654         100  [{"OriginalImage": "s3://crackd/inference_v2/T...  {"success": true, "message": "Device has passe...  ...      1        0        None 2019-11-14 07:16:49
8     14652         100  [{"OriginalImage": "s3://crackd/inference_v2/S...  {"success": true, "message": "Device has passe...  ...      1        0        None 2019-11-14 06:47:46
9     14651         100  [{"OriginalImage": "s3://crackd/inference_v2/Y...  {"success": true, "message": "Device has passe...  ...      1        0        None 2019-11-14 06:47:00
10    14644           1  [{"OriginalImage": "s3://crackd/inference_v2/F...  {"success": true, "message": "Device has passe...  ...      1        0        None 2019-11-14 04:53:33
11    14641           1  [{"OriginalImage": "s3://crackd/inference_v2/D...  {"success": true, "message": "Device has passe...  ...      1        0        None 2019-11-14 04:50:53

这些表格内容是使用 MySQL 查询从 python 函数中获取的,该函数返回名为 table_contents 的变量,其中包含上述表格内容。 (变量类型为:class 'pandas.core.frame.DataFrame')

现在我只想将 table_contents 的那些行存储在字典中,前提是 StoredFileLinks 列不是空列表。

我的尝试:

response_object = {
    'table_result': []
}

for i in table_contents:
    if i['StoredFileLinks'] is not None:
        response_object['table_result'] = table_contents[i]

错误:

    if i['StoredFileLinks'] is not None:
TypeError: string indices must be integers

如何解决这个问题?抱歉,因为我是处理 pandas 数据框对象的新手。

PS:在打印变量 i 时,我只得到表的列名。

最佳答案

如果将空列表转换为 bool 值得到 False,那么您可以通过 boolean indexing 进行过滤转换为 bools:

table_contents = pd.DataFrame({'StoredFileLinks':[[],[],[{'a':'b'}]]})
print (table_contents)
  StoredFileLinks
0              []
1              []
2    [{'a': 'b'}]

table_contents = table_contents[table_contents.StoredFileLinks.astype(bool)]
print (table_contents)
  StoredFileLinks
2    [{'a': 'b'}]

长度由 Series.str.len 测试的解决方案:

table_contents = table_contents[table_contents.StoredFileLinks.str.len() != 0]
print (table_contents)
  StoredFileLinks
2    [{'a': 'b'}]

关于python - 检查表的特定列在 python 中是否为空,其中整个表内容存储在一个变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58856004/

相关文章:

django - 在序列化器 Django Rest Framework 中通过 id 传递模型实例

python - Pandas :分别对每一列进行排序

python - 通过从文本文件导入残基列表,使用 PyMol 脚本选择蛋白质中的保守残基

python - 让 Celery 使用 Django 异常中间件

python - 在 pandas 中,如何读取列中包含列表的 csv 文件?

python - 基于列枚举数据框

python - NumPy 中如何处理大整数?

python - SCAPY发送数据包错误OSError : [Errno 97] Address family not supported by protocol

python - @classmethod 用于构造函数重载

python - pandas 中 dataFrame 的数据分组具有相同的行值