大熊猫str.extract一起用于过滤的数据和交叉表吗?

时间:2018-12-01 14:56:49

标签: 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幸存者的答案?

1 个答案:

答案 0 :(得分:0)

错误原因

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

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

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

在执行这些行之前,变量live仍包含一个熊猫数据框。但是,一旦在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'])