如何根据列将列名称切成新数据框的行?

时间:2019-01-19 18:15:02

标签: python-3.x pandas

我有一个看起来像这样的df

data.answers.1542213647002.subItemType   data.answers.1542213647002.value.1542213647003               
     thank you for the response                   TRUE

如何仅将具有字符串.value.和具有值TRUE的列的列名称切成新的df,像这样?

new_df

old_column_names
data.answers.1542213647002.value.1542213647003  

我大约还有100列,其中包含.value.,但并非所有列中的值都为TRUE。

1 个答案:

答案 0 :(得分:1)

假设此样本为df:

df = pd.DataFrame({'col':[1,2]*5,
                   'col2.value.something':[True,False]*5,
                   'col3.value.something':[5]*10,
                   'col4':[True]*10})

然后

# boolean indexing with stack
new = pd.DataFrame(list(df[((df==True) & (df.columns.str.contains('.value.')))].stack().index))

# drop duplicates
new = new.drop(columns=0).drop_duplicates()

    1
0   col2.value.something