我有一个看起来像这样的表:
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
进行过滤转换为 bool
s:
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/