如何解决Pandas 数据框 OrderedDict 提取数据
我有一个包含一列三行的 Database.csv 文件,这些是使用 simple-salesforce 从 salesforce 导出的数据,我尝试从 OrderedDict 单元格数据('Name ','需求').
数据框
Type__c
OrderedDict([('attributes',OrderedDict([('type','Type__c'),('url','/services/data/v42.0/sobjects/Type__c/1234400000001ddAAA')])),('Name','Demand')])
OrderedDict([('attributes','/services/data/v42.0/sobjects/Type__c/123430000004C93AAE')])),'Stand')])
使用下面的代码,我读取了 csv 文件,并为每一行分配了包含“OrderedDict([....)”的值来命名,我想打印“名称”字段值,
import pandas as pd
from collections import OrderedDict
df = pd.read_csv('Database.csv')
for index,row in df.iterrows():
name = df._get_value(index,'Type__c')
base=OrderedDict([('attributes','/services/data/v42.0/sobjects/Type__c/1234500000001erAAA')])),'Private')])
print("\n",name['Name'])
print(base['Name'])
结果:
.
print("\n",name['Name'])
TypeError: string indices must be integers
当我将 print("\n",name['Name']) 更改为 print("\n",name) 以测试手动添加的 OrderedDict 时,我可以看到它有效
import pandas as pd
from collections import OrderedDict
df = pd.read_csv('Database.csv')
for index,'Type__c')
test=OrderedDict([('attributes','Private')])
***print("\n",name)***
print(test['Name'])
结果:
OrderedDict([('attributes','Demand')])
Private
OrderedDict([('attributes','Stand')])
Private
我有一个包含数千行的文件,必须有办法创建一个名为“Name”的新列并添加文本数据
最后我想实现 发件人
Type__c
OrderedDict([('attributes','Demand')])
OrderedDict([('attributes','Stand')])
到
Name
Demand
Demand
Stand
解决方法
欢迎来到 SO 社区 Pamuk!
与遍历数据帧的行相比,将特定函数“应用”到整个列(甚至是数据帧的子集)要高效得多。这样,pandas 会为您处理性能问题,而且通常更具可读性(因为您不必添加任何迭代逻辑)。
以下是如何使用 apply 和快速 lambda 函数获取“名称”列的方法(只有最后一行与您相关,其余用于复制您的示例数据帧):
from collections import OrderedDict
import pandas as pd
data = [
OrderedDict([('attributes',OrderedDict([('type','Type__c'),('url','/services/data/v42.0/sobjects/Type__c/1234400000001ddAAA')])),('Name','Demand')]),OrderedDict([('attributes','/services/data/v42.0/sobjects/Type__c/123430000004C93AAE')])),'Stand')]),]
df = pd.DataFrame({"Type__c": data})
df["Name"] = df["Type__c"].apply(lambda x: x["Name"])
有关更多示例和详细信息,请参阅 Pandas Series.apply
自 df["Type__c"]
文档。
对于涉及一次使用更多列的更复杂的逐行操作,您可以查看 DataFrame.apply
的文档并将函数应用于数据帧本身(或其子集)。
有关文档中与您的工作非常相关的更易读的部分,请查看 Function Application 上的 Pandas 用户指南部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。