简体   繁体   English

如果行名存在于熊猫中另一个数据框的列名中,则选择数据框的行值

[英]Select the row values of dataframe if row name is present in column name of another dataframe in pandas

If I have df1如果我有df1

df1 = pd.DataFrame({'Col_Name': {0: 'A', 1: 'b', 2: 'c'}, 'X': {0: 12, 1: 23, 2: 223}, 'Z': {0: 42, 1: 33, 2: 28 }})

and df2df2

df2 = pd.DataFrame({'Col': {0: 'Y', 1: 'X', 2: 'Z'}, 'Low1': {0: 0, 1: 0, 2: 0}, 'High1': {0: 10, 1: 10, 2: 630}, 'Low2': {0: 10, 1: 10, 2: 630}, 'High2': {0: 50, 1: 50, 2: 3000}, 'Low3': {0: 50, 1: 50, 2: 3000}, 'High3': {0: 100, 1: 100, 2: 8500}, 'Low4': {0: 100, 1: 100, 2: 8500}, 'High4': {0: 'np.inf', 1: 'np.inf', 2: 'np.inf'}})

Select the row values of df2 if row is present in column name of df1.如果 df1 的列名中存在行,则选择 df2 的行值。

Expected Output: df3预期输出:df3

df3 = pd.DataFrame({'Col': {0: 'X', 1: 'Z'}, 'Low1': {0: 0, 1: 0}, 'High1': {0: 10, 1: 630}, 'Low2': {0: 10, 1: 630}, 'High2': {0: 50, 1: 3000}, 'Low3': {0: 50, 1: 3000}, 'High3': {0: 100, 1: 8500}, 'Low4': {0: 100, 1: 8500}, 'High4': {0: 'np.inf', 1: 'np.inf'}})

How to do it?怎么做?

You can pass a boolean list to select the rows of df2 that you want.您可以传递一个布尔列表来选择您想要的df2行。 This list can be created by looking at each value in the Col column and asking if the value is in the columns of df1可以通过查看Col列中的每个值并询问该值是否在df1的列中来创建此列表

df3 = df2[[col in df1.columns for col in df2['Col']]]

you can drop the non-relevant col and use the other columns...您可以删除不相关的列并使用其他列...

df3 = df2[df2['Col'].isin(list(df1.drop('Col_Name',axis=1).columns))]

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM