我有一个由唯一字符串组成的数据帧,我想找到给定字符串的行和列。我需要这些值,因为我最终将把这个数据框导出到excel电子表格中。到目前为止,我找到的获取这些值的最简单方法是:
jnames = list(df.iloc[0].to_frame().index)
for i in jnames:
for k in df[i]:
if 'searchstring' in str(k):
print('Column: {}'.format( (jnames.index(i) + 1 ) ) )
print('Row: {}'.format( list( df[i] ).index('searchstring') ) )
break
有谁能提出一个更好地利用熊猫固有能力的解决方案吗?在
尝试使用contains。这将返回一个包含要查找的切片的行的数据帧。在
df[df['<my_col>'].str.contains('<my_string_slice>')]
类似地,您可以使用match进行直接匹配。在
如果没有可复制的代码/数据,我将构建一个数据帧并展示一个简单的方法:
设置
数据帧如下所示:
^{pr2}$解决方案
^{3}$结果
说明
df.values
访问dataframe的numpy
数组。在np.where
创建满足所提供条件的坐标数组。在zip(*...)
将[x-coords-array, y-coords-array]
转换为(x, y)
坐标对。在这是我不写双for循环的方法:
第一个返回列名,第二个返回索引。组合在一起,您将得到索引列组合。因为您提到df中的所有值都是唯一的,所以这两行都将只返回一个值。在
您可能需要尝试,除非
value_to_search
不在数据框中。在相关问题 更多 >
编程相关推荐