Pandas数据框架:具有长名称的列

3

我有一个来自客户调查的数据集。目前每一列都对应着一个问题。导入数据时,每个列名即为对应的问题:

['this is a long question 01', 'this is a long question 02, ..., 'this is a long question 186']

这是正确的,186个问题=列。

我是Panda的新手。我的分析非常简单,我只需要做一些简单的事情,比如:

myDataFrame.loc['column1' == 'BLue hair']

由于列1非常长,管理起来变得很麻烦。我想我可以只引用索引。就像这样:

myDataFrame.loc[myDataFrame[33] == 'BLue hair']

对于DataFrame.loc或Dataframe.iloc似乎都不起作用。

我想知道正确的做法是什么。顺便说一句,转置数据框可以去掉列名问题,但会不必要地增加分析的复杂性。

我还没有完全掌握使用Pandas和数据框的许多概念,欢迎任何建议。

2个回答

3
如果你编写代码
cols = myDataFrame.columns

那么你可以使用。
myDataFrame[myDataFrame[cols[33]] == 'BLue hair']

1
在这种情况下,我的建议是给你的列编号,并使用字典将每个问题与一个数字相对应。
例如:
# list of questions, equivalent to existing column names
questions = ['this is a long question 001', 'this is a long question 002',
             'this is a long question 003', 'this is a long question 004']

# create dictionary
id_question = dict(enumerate(questions, 1))

# reverse dictionary for easy access later
question_id = {v: k for k, v in id_question.items()}

# {1: 'this is a long question 001', 2: 'this is a long question 002',
#  3: 'this is a long question 003', 4: 'this is a long question 004'}

# redefine column names in dataframe from mapper dict keys
df.columns = list(mapper)

现在,您可以通过您创建的两个字典轻松地在数字ID和问题之间进行转换。

1
谢谢 @jpp。它有效。然而,对于我需要的东西,我认为我将坚持使用Ami之前的答复。 - Wilmar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接