【问题标题】:create sub-dataframe based on substring [duplicate]基于子字符串创建子数据框[重复]
【发布时间】:2020-08-24 23:25:04
【问题描述】:

我有一个像这样的数据框:

    soundIn                 response_rater0  response_rater1    response_rater2
1   audios/VP10_S07_w.wav   2.0              2.0                1.0 
2   audios/VP11_S08_w.wav   1.0              2.0                2.0 
3   audios/VP01_S11_w.wav   1.0              1.0                2.0 
4   audios/VP10_S11_i.wav   2.0              2.0                2.0 
...

我想创建另一个只有行的数据框,在“soundIn”列中包含“VP01”。我试图用 loc 来做,但它不接受 VP01 只是我正在搜索的项目的子字符串。

rslt_df = all_responses.loc['*VP01*' in all_responses['soundIn']] 

有人有想法吗?

【问题讨论】:

    标签: python pandas dataframe substring


    【解决方案1】:

    解决方案

    试试这个。使用pandas.Series.str.contains 方法运行比较并将结果作为索引传递给all_responses.loc[]

    all_responses.loc[all_responses['soundIn'].str.contains('VP01')]
    

    虚拟数据示例

    import pandas as pd
    from io import StringIO
    
    s = """
        soundIn                 response_rater0  response_rater1    response_rater2
    1   audios/VP10_S07_w.wav   2.0              2.0                1.0 
    2   audios/VP11_S08_w.wav   1.0              2.0                2.0 
    3   audios/VP01_S11_w.wav   1.0              1.0                2.0 
    4   audios/VP10_S11_i.wav   2.0              2.0                2.0
    """
    
    # read data into a dataframe from the string representation
    df = pd.read_csv(StringIO(s), sep='\s+')
    # Match serach condition and produce result
    result = df.loc[df['soundIn'].str.contains('VP01')]
    print(result)
    

    输出

                     soundIn  response_rater0  response_rater1  response_rater2
    3  audios/VP01_S11_w.wav              1.0              1.0              2.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2016-04-30
      • 2019-12-24
      相关资源
      最近更新 更多