Pandas Dataframe:具有长名称的列

时间:2018-04-01 16:26:13

标签: python pandas dataframe

我有来自客户调查的数据集。就目前而言,每列对应一个问题。导入数据时,我最终会将列名称作为问题:

['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']

由于column1非常长,管理它变得很麻烦。我想我可以引用索引。类似的东西:

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

对于DataFrame.loc或Dataframe.iloc,它似乎无效。

我想知道这样做的正确方法是什么。转移数据框允许我摆脱列名称问题,但它不必要地使我的分析复杂化。

我还没有掌握许多使用Pandas和数据帧的概念,我很感激任何建议。

2 个答案:

答案 0 :(得分:1)

如果你写

cols = myDataFrame.columns

然后你可以使用

myDataFrame[myDataFrame[cols[33]] == 'BLue hair']

答案 1 :(得分: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)

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