如何选择具有相同名称的所有数据框列?

9 浏览
0 Comments

如何选择具有相同名称的所有数据框列?

我正在基于CSV导入创建一个数据框:\n

ID, attachment, attachment, comment, comment
1, lol.jpg, lmfao.png, 'Luigi',
2, cat.docx, , 'It's me', 'Mario'

\n基本上,\'attachments\'和\'comment\'列的数量对应于具有更大数量的附件和评论的行。\n由于我从第三方软件导出CSV,事先不知道有多少附件和评论列。\n使用pd.read_csv导入此CSV会创建以下数据框:\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

\n

ID attachment attachment.1 comment comment.1
0 1 lol.jpg lmfao.png \'Luigi\'
1 2 cat.docx \'It\'s me\' \'Mario\'

\n有没有一种简单的方法来选择所有附件/评论列?\n例如attachments_df = imported_df.attachment.allcomments_df = imported_df[\'comment].??\n谢谢。

0
0 Comments

如何选择具有相同名称的所有数据框列?

在处理数据框时,有时我们需要选择具有相同名称的所有列。例如,我们有一个数据框(imported_df)如下所示:

   attachment attachment.1
0    lol.jpg    lmfao.png
1   cat.docx          NaN

我们想选择所有具有"attachment"名称的列。那么如何做到呢?

解决方法是使用`filter`函数的`like`属性。我们可以使用以下代码来实现:

imported_df.filter(like='attachment')

这将返回以下结果:

  attachment attachment.1
0    lol.jpg    lmfao.png
1   cat.docx          NaN

通过使用`like`属性和`filter`函数,我们可以轻松地选择具有相同名称的所有列。这对于处理大型数据框中的特定列非常有用。

0
0 Comments

问题的出现原因:在处理数据框时,有时候我们需要选择具有相同名称的所有列。但是,在数据框中选择具有相同名称的所有列可能会有一些困难。

解决方法:

有一个可行的解决方法是使用pandas库的loc函数和str属性。以下是解决问题的步骤:

1. 首先,我们需要将数据框导入为一个变量(imported_df)。

2. 接下来,我们可以使用loc函数选择具有特定名称的所有列。在这个例子中,我们需要选择具有'attachment'和'comment'开头的所有列。

3. 使用imported_df.columns.str.startswith()函数来检查列名是否以特定字符串开头。在这个例子中,我们检查列名是否以'attachment'和'comment'开头。

4. 最后,我们可以使用loc函数和布尔索引来选择具有特定名称的所有列。将选定的列分别存储在attachments_df和comments_df变量中。

以下是使用上述解决方法的代码示例:

attachments_df = imported_df.loc[:,imported_df.columns.str.startswith('attachment')]
comments_df = imported_df.loc[:,imported_df.columns.str.startswith('comment')]

通过这种方法,我们可以选择具有相同名称的所有列,并将它们存储在不同的数据框中,以便进一步处理和分析。

0
0 Comments

问题的出现原因是需要从一个DataFrame中选择具有相同名称的所有列。在这个问题中,用户想要选择以特定字符串开头的列,并且这些列可能包含附加的数字。

解决方法是使用pandas库中的DataFrame.filter函数。该函数可以接受一个正则表达式作为参数,以选择满足特定模式的列。在这种情况下,用户可以使用正则表达式'^attachment\.*\d*$'选择所有以"attachment"开头的列,且后面可能跟有任意数量的点和数字。类似地,可以使用正则表达式'^comment\.*\d*$'选择所有以"comment"开头的列,且后面可能跟有任意数量的点和数字。

下面是具体的代码实现:

attachments_df = imported_df.filter(regex='^attachment\.*\d*$')
comments_df = imported_df.filter(regex='^comment\.*\d*$')

以上代码将从imported_df DataFrame中选择满足特定模式的列,并将结果存储在attachments_df和comments_df中。

通过使用pandas的DataFrame.filter函数和正则表达式,用户可以方便地选择具有相同名称的所有列,并根据自己的需求进行进一步的处理。

0