python - Pandas str.extract 可一起用于过滤数据和交叉表吗?

标签 python python-3.x

我正在尝试在过滤的数据集上提取选定的单词和交叉表,使用巨大的数据集来说明。

train = pd.read_csv("d1.csv")
live= train[train['Survived']>0]# filter for survivors
print (live)
for live in live:
    live['Tt'] = live.Name.str.extract(' ([A-Za-z]+)\.', expand=False)
pd.crosstab(live['Tt'], live['Sex'])

我收到错误:AttributeError:“str”对象没有属性“Name”

实时检查过滤后的数据集,数据集中存在“名称”变量。

我哪里出了问题,如何在交叉表中提取仅显示幸存者的性别和 tt 的答案?

最佳答案

错误原因

如果您有一个 for x in df: 形式的 for 语句,那么您基本上所说的是:循环遍历数据帧 df 的所有列名称>,并在每次循环迭代期间将列名称分配给变量x

现在让我们看看您的 for 循环:

for live in live:
    live['Tt'] = live.Name.str.extract(' ([A-Za-z]+)\.', expand=False)

在执行这些行之前,变量live仍然包含一个pandas数据帧。但是,一旦进入 for 循环变量 live 就会从数据帧中分配一个字符串对象列名称。因此,您收到了错误消息。

解决方案

我认为,如果您简单地从代码中删除 for-foop,您就会得到预期的结果,如下所示:

train = pd.read_csv("d1.csv")
live= train[train['Survived']>0]# filter for survivors
live['Tt'] = live.Name.str.extract(' ([A-Za-z]+)\.', expand=False)
pd.crosstab(live['Tt'], live['Sex'])

关于python - Pandas str.extract 可一起用于过滤数据和交叉表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53572006/

相关文章:

python - 读取特定输入的文件 python

python - 从列表列表中有效地删除与顺序无关的重复项

python - 为什么 multiprocessing.Lock() 不锁定 Python 中的共享资源?

python - 如何从泊松分布中抽取随机样本?

python - 在python中实现协程

python - 我可以设置特定于虚拟环境的代理变量吗?

python - 如何在 VIPS/Python 中对特定色调范围应用变换

python - 使用需要特定字段的 Tweepy 提取推文

python - 自动更新的打印时间

python - "Installing From Source"在 Anaconda 环境中