从Pandas datafram获取字符串的行和列

2024-06-28 16:35:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由唯一字符串组成的数据帧,我想找到给定字符串的行和列。我需要这些值,因为我最终将把这个数据框导出到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

有谁能提出一个更好地利用熊猫固有能力的解决方案吗?在


Tags: 数据方法字符串informatdfforindex
3条回答

尝试使用contains。这将返回一个包含要查找的切片的行的数据帧。在

df[df['<my_col>'].str.contains('<my_string_slice>')]

类似地,您可以使用match进行直接匹配。在

如果没有可复制的代码/数据,我将构建一个数据帧并展示一个简单的方法:

设置

import pandas as pd, numpy as np

df = pd.DataFrame([['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'b']])

数据帧如下所示:

^{pr2}$

解决方案

^{3}$

结果

[(0, 1), (2, 2)]

说明

  • df.values访问dataframe的numpy数组。在
  • np.where创建满足所提供条件的坐标数组。在
  • zip(*...)[x-coords-array, y-coords-array]转换为(x, y)坐标对。在

这是我不写双for循环的方法:

value_to_search = "c"
print(df[[x for x in df.columns if value_to_search in df[x].unique()]].index[0])
print(df[[x for x in df.columns if value_to_search in df[x].unique()]].columns[0])

第一个返回列名,第二个返回索引。组合在一起,您将得到索引列组合。因为您提到df中的所有值都是唯一的,所以这两行都将只返回一个值。在

您可能需要尝试,除非value_to_search不在数据框中。在

相关问题 更多 >