在 Pandas 中查找包含另一列行中特定值的列名
Find column name in Pandas that contains a specific value in the row from another column
我有 200 多列乘 10000 多行。我正在尝试查找行中包含特定值的列的名称。在下面的示例中,特定值位于值列中。我如何确定 'Value' 列中的值并不重要。
示例:Value_Col 是我尝试 return 的值。
Date Time A B C D E F Value Value_Col
Jan1 1245 3.0 3.2 4.6 5.7 2.1 8.0 5.7 D
Jan2 1045 4.5 8.4 3.9 2.2 9.4 8.3 3.9 C
Jan3 1350 1.4 3.3 4.5 8.9 1.4 0.4 1.4 A
我只想搜索 A 到 F 列并找到值存在的第一个实例(最左边)的列名。在示例中,我的兴趣值在以 Jan3 的日期开始的行中出现了两次。我想基本上索引值出现的列名和 select 第一个。我知道这将是索引 0(或 [0]),基于为值搜索 returned 的列表。
上面的例子只是一小部分数据。我目前有一个列表,其中包含我希望在其中进行值搜索的所有列名。感兴趣的值可以通过同一行中的许多列出现。
I want to search only columns A through F and find the column name for the first instance (leftmost) the value exists
将 Value
列与数据帧的切片进行比较(使用 .loc[]
)后,您可以在 axis=1
上使用 idxmax
df['Value_Col'] = df.loc[:,'A':'F'].isin(df['Value']).idxmax(1)
print(df)
Date Time A B C D E F Value Value_Col
0 Jan1 1245 3.0 3.2 4.6 5.7 2.1 8.0 5.7 D
1 Jan2 1045 4.5 8.4 3.9 2.2 9.4 8.3 3.9 C
2 Jan3 1350 1.4 3.3 4.5 8.9 1.4 0.4 1.4 A
如果列的 none 可能包含 df['Value]
值,您可以使用:
m = df.loc[:,'A':'F']
df['Value_Col'] = m.isin(df['Value']).dot(m.columns).str[0]
我有 200 多列乘 10000 多行。我正在尝试查找行中包含特定值的列的名称。在下面的示例中,特定值位于值列中。我如何确定 'Value' 列中的值并不重要。
示例:Value_Col 是我尝试 return 的值。
Date Time A B C D E F Value Value_Col
Jan1 1245 3.0 3.2 4.6 5.7 2.1 8.0 5.7 D
Jan2 1045 4.5 8.4 3.9 2.2 9.4 8.3 3.9 C
Jan3 1350 1.4 3.3 4.5 8.9 1.4 0.4 1.4 A
我只想搜索 A 到 F 列并找到值存在的第一个实例(最左边)的列名。在示例中,我的兴趣值在以 Jan3 的日期开始的行中出现了两次。我想基本上索引值出现的列名和 select 第一个。我知道这将是索引 0(或 [0]),基于为值搜索 returned 的列表。
上面的例子只是一小部分数据。我目前有一个列表,其中包含我希望在其中进行值搜索的所有列名。感兴趣的值可以通过同一行中的许多列出现。
I want to search only columns A through F and find the column name for the first instance (leftmost) the value exists
将 Value
列与数据帧的切片进行比较(使用 .loc[]
)后,您可以在 axis=1
上使用 idxmax
df['Value_Col'] = df.loc[:,'A':'F'].isin(df['Value']).idxmax(1)
print(df)
Date Time A B C D E F Value Value_Col
0 Jan1 1245 3.0 3.2 4.6 5.7 2.1 8.0 5.7 D
1 Jan2 1045 4.5 8.4 3.9 2.2 9.4 8.3 3.9 C
2 Jan3 1350 1.4 3.3 4.5 8.9 1.4 0.4 1.4 A
如果列的 none 可能包含 df['Value]
值,您可以使用:
m = df.loc[:,'A':'F']
df['Value_Col'] = m.isin(df['Value']).dot(m.columns).str[0]