在熊猫中的匹配列名称上获取相应的行值

时间:2019-09-12 20:21:25

标签: python pandas dataframe

我有一个包含许多列和一行的数据框,并且每次出现特定值时都需要获取列标题。例如:

Date               c1    col2    col3    col4    col5    rl6    d7 
01/01/2016 00:00   37.04   36.57   35.77   37.56   36.79   35.90   38.15 

...并给出一个具有列名['col2','col3','col4','col5']的数组,

我需要将这些名称与标头名称进行比较,无论列名称与数组是否匹配,然后在一行中获取相应的值。例如,col2应该赋予值36.57

2 个答案:

答案 0 :(得分:0)

尝试一下:

# Make a Series containing the columns you want to retrieve
s = pd.Series(['col1','col2','col3','col4','col5'])

# Get the list of valid column names
# Notice that you don't have a `col1` column in your sample input
valid = s[s.isin(df.columns)]

df[valid]

结果

    col2   col3   col4    col5
0  36.57  35.77  37.56  36z.79

答案 1 :(得分:0)

假设您的数据框是

  

df

您有了数组,

l = ['col2', 'col3', 'col4', 'col5']

然后您将获得相应的标签值,

[df[label].values[0] for label in l if label in df]

您的示例的输出将为

[36.57, 35.77, 37.56, 36.79]

希望它对您有帮助。