【问题标题】:Removing brackets from SQL connection in Python dataframe从 Python 数据框中的 SQL 连接中删除括号
【发布时间】:2018-01-12 11:30:00
【问题描述】:

我的 Python Notebook 中有一个 SQL 查询表,它提供了以下数据框:

我的最终目标是按第二列分组,这是一个布尔值,并获得第一列的每组平均值(范围从 1 到 10)

问题是我无法有效地删除括号,因此无法从第一列计算任何内容。到目前为止,我已经尝试过:

val = df.values
val

接着是:

list = [i[0] for i in val]
z = map(ast.literal_eval,list)
zz= list(z)
zz

我想使用一个值,例如:[ 367, 368, 370] 来自一列(这是来自多项选择问题的选择,为您提供一些上下文)但在这种情况下它没有不行。也许是因为它旁边的布尔值?我真的不知道。

编辑:SQL 查询:

pd.read_sql
('
SELECT U.iUserSexeType, CA.jAnswer 
FROM [User] U 
JOIN DBO.ConsultationAnswer CA ON CA.fkiUserId=U.id 
LEFT JOIN UserAdresse UA ON UA.fkiUserId=U.id 
WHERE fkiConsultationSurveyId=37 and fkiConsultationQuestionId=260
')

有什么建议吗?

【问题讨论】:

    标签: python sql sql-server dataframe


    【解决方案1】:
        df['value'] = df['value'].str[0]
    

    或者:

        df['value'] = df['value'].str.get(0)
    

    https://stackoverflow.com/a/38147471/7853322

    【讨论】:

      【解决方案2】:

      您可以这样做以删除 sql 查询中的括号:

      Select replace(replace(JAnswer,'['),']')
      from your table
      

      您的查询:

      SELECT U.iUserSexeType, replace(replace(CA.jAnswer,'['),']') as jAnswer
      FROM [User] U 
      JOIN DBO.ConsultationAnswer CA ON CA.fkiUserId=U.id 
      LEFT JOIN UserAdresse UA ON UA.fkiUserId=U.id 
      where fkiConsultationSurveyId=37 
      and fkiConsultationQuestionId=260
      

      【讨论】:

      • SQL查询如下: pd.read_sql('SELECT U.iUserSexeType, CA.jAnswer FROM [User] U JOIN DBO.ConsultationAnswer CA ON CA.fkiUserId=U.id LEFT JOIN UserAdresse UA ON UA.fkiUserId=U.id where fkiConsultationSurveyId=37 and fkiConsultationQuestionId=260' (为了清楚起见,我将编辑我的帖子),所以我应该替换 CA.jAnswer ?
      • parc260 = pd.read_sql('SELECT U.iUserSexeType, replace(replace(CA.jAnswer,'['),']') as jAnswer FROM [User] U JOIN DBO.ConsultationAnswer CA ON CA.fkiUserId=U.id LEFT JOIN UserAdresse UA ON UA.fkiUserId=U.id where fkiConsultationSurveyId=37 and fkiConsultationQuestionId=260' , connexion) ^ SyntaxError: invalid syntax
      • 你必须转义单引号。
      • parc260 = pd.read_sql('SELECT U.iUserSexeType, replace(replace(CA.jAnswer,''[''),'']'') as jAnswer FROM [User] U JOIN DBO .ConsultationAnswer CA ON CA.fkiUserId=U.id LEFT JOIN UserAdresse UA ON UA.fkiUserId=U.id where fkiConsultationSurveyId=37 and fkiConsultationQuestionId=260' , connexion)
      猜你喜欢
      • 2018-08-16
      • 2022-12-23
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2022-11-16
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多