基于子字符串创建子数据帧

2024-09-26 18:18:12 发布

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

我有这样一个数据帧:

    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']] 

有人有主意吗


Tags: 数据responseresponsesalllocwavs07rater2
1条回答
网友
1楼 · 发布于 2024-09-26 18:18:12

解决方案

试试这个。使用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

相关问题 更多 >

    热门问题