Python:将字符串[(&x27;a&x27;0.2)、(&x27;b&x27;0.9)、(&x27;a&x27;0.4)]转换为数据帧

Python:将字符串[(&x27;a&x27;0.2)、(&x27;b&x27;0.9)、(&x27;a&x27;0.4)]转换为数据帧,python,string,Python,String,在Python中,如何转换字符串,如 thisStr = '[('a', 0.332), ('d', 0.43766), ('b', 0.3244), ('b', 0.76577), ('a', 0.863), ('d', 0.96789)]' 进入一个数据帧,比如 index item value 0 a 0.332 1 d 0.43766 2 b 0.3244 3 b 0.7

在Python中,如何转换字符串,如

thisStr = '[('a', 0.332), ('d', 0.43766), ('b', 0.3244), ('b', 0.76577), ('a', 0.863), ('d', 0.96789)]'
进入一个数据帧,比如

index   item     value
0       a        0.332
1       d        0.43766
2       b        0.3244
3       b        0.76577
4       a        0.863
5       d        0.96789

听起来像是要将字符串更改为数据帧,然后进行一些操作。我将通过一些简单的替换和手动编辑字符串的开头和结尾,将字符串更改为以下内容。您正在转义标点符号(除了结尾),以便可以应用eval()函数

import pandas as pd

thisStr = eval('[(\'a\', 0.332), (\'d\', 0.43766), (\'b\', 0.3244), (\'b\', 0.76577), (\'a\', 0.863), (\'d\', 0.96789)]')

df = pd.DataFrame(thisStr)
df.rename(columns={0:'item', 1:'value'}, inplace=True)

# one approach to solving the problem of removing rows where
# item a has values less than 0.8.
mask = (df['item'] == 'a') & (df['value'] < 0.8)
df2 = df[~mask]
将熊猫作为pd导入
这个str=eval(“[(\'a\',0.332),(\'d\',0.43766),(\'b\',0.3244),(\'b\',0.76577),(\'a\',0.863),(\'d\',0.96789)])
df=pd.DataFrame(thissr)
rename(列={0:'item',1:'value'},inplace=True)
#一种解决删除其中的行问题的方法
#项目a的值小于0.8。
掩码=(df['item']='a')&(df['value']<0.8)
df2=df[~掩码]

听起来像是要将字符串更改为数据帧,然后进行一些操作。我将通过一些简单的替换和手动编辑字符串的开头和结尾,将字符串更改为以下内容。您正在转义标点符号(除了结尾),以便可以应用eval()函数

import pandas as pd

thisStr = eval('[(\'a\', 0.332), (\'d\', 0.43766), (\'b\', 0.3244), (\'b\', 0.76577), (\'a\', 0.863), (\'d\', 0.96789)]')

df = pd.DataFrame(thisStr)
df.rename(columns={0:'item', 1:'value'}, inplace=True)

# one approach to solving the problem of removing rows where
# item a has values less than 0.8.
mask = (df['item'] == 'a') & (df['value'] < 0.8)
df2 = df[~mask]
将熊猫作为pd导入
这个str=eval(“[(\'a\',0.332),(\'d\',0.43766),(\'b\',0.3244),(\'b\',0.76577),(\'a\',0.863),(\'d\',0.96789)])
df=pd.DataFrame(thissr)
rename(列={0:'item',1:'value'},inplace=True)
#一种解决删除其中的行问题的方法
#项目a的值小于0.8。
掩码=(df['item']='a')&(df['value']<0.8)
df2=df[~掩码]

使用eval函数将字符串转换为元组列表

# change to double quote " because contains single quote within string
thisStr = "[('a', 0.332), ('d', 0.43766), ('b', 0.3244), ('b', 0.76577), ('a', 0.863), ('d', 0.96789)]"

# this turn the string into list of tuples
mylist = eval(thisStr)
# mylist[0][0] access 1st row item which is 'a'
# mylist[0][1] access 1st row value which is 0.332

# to remove all row 'a' less than 0.8
newlist = [i for i in mylist if not (i[0]=='a' and i[1] < 0.8)] 
#更改为双引号”,因为字符串中包含单引号
thisStr=“[('a',0.332),('d',0.43766),('b',0.3244),('b',0.76577),('a',0.863),('d',0.96789)]”
#这会将字符串转换为元组列表
mylist=eval(thistr)
#mylist[0][0]访问第一行项目,该项目为“a”
#mylist[0][1]访问第一行值,即0.332
#删除小于0.8的所有行“a”
newlist=[i为我的列表中的i,如果不是(i[0]='a'和i[1]<0.8)]

使用eval函数将字符串转换为元组列表

# change to double quote " because contains single quote within string
thisStr = "[('a', 0.332), ('d', 0.43766), ('b', 0.3244), ('b', 0.76577), ('a', 0.863), ('d', 0.96789)]"

# this turn the string into list of tuples
mylist = eval(thisStr)
# mylist[0][0] access 1st row item which is 'a'
# mylist[0][1] access 1st row value which is 0.332

# to remove all row 'a' less than 0.8
newlist = [i for i in mylist if not (i[0]=='a' and i[1] < 0.8)] 
#更改为双引号”,因为字符串中包含单引号
thisStr=“[('a',0.332),('d',0.43766),('b',0.3244),('b',0.76577),('a',0.863),('d',0.96789)]”
#这会将字符串转换为元组列表
mylist=eval(thistr)
#mylist[0][0]访问第一行项目,该项目为“a”
#mylist[0][1]访问第一行值,即0.332
#删除小于0.8的所有行“a”
newlist=[i为我的列表中的i,如果不是(i[0]='a'和i[1]<0.8)]

这是一个元组列表……您的文本a b d,它在其他地方是否定义为另一个字符串var,或者它应该是“a”“b”和“d”,例如('a',0.332)?感谢您的评论,我做了一个更新,以更清楚地说明我试图做什么项目b的值为0.3244和0.76577,您需要单独访问它们吗?当访问项b时,您期望它得到什么?值“b”是一个概率,因此有许多“b”的轨迹,每个轨迹都给出一个概率,因此,例如,我可以平均值“b”的所有值,这是一个元组列表…您的文本a b d,它在别处定义为另一个字符串变量,还是应该是“a”“b”和“d”,例如('a',0.332)?感谢您的评论,我做了一个更新,让您更清楚我想做什么。项目b的值为0.3244和0.76577,您需要单独访问它们吗?当访问项目b时,您希望它得到什么?b的值是一个概率,因此有许多“b”的轨迹,每个轨迹都给出一个概率,因此,例如,我可以平均“b”的所有值