[英]How to find the number of unique values in comma separated strings stored in an pandas data frame column?
[英]convert pandas data frame column values into comma separated strings
我有一个看起来像这样的数据框:
Column1 Column2
'['jjhjh', 'adads','adsd']', 'dwdwdqw'
'['adads','adsd']', 'dwdwdqw'
'['jjhjh', 'adads','adsd']', 'dwdwdqw'
'['adads','adsd']', 'dwdwdqw'
'['adads','adsd']', 'dwdwdqw'
尽管 Column1 中的项目看起来像项目列表,但它们是字符串。 我想从此字符串中删除方括号,删除引号并将该列中的所有值替换为相同的值,但以逗号分隔的字符串。 我想要的 output 是:
Column1 Column2
'jjhjh', 'adads','adsd', 'dwdwdqw'
'adads','adsd', 'dwdwdqw'
'jjhjh', 'adads','adsd', 'dwdwdqw'
'adads','adsd', 'dwdwdqw'
'adads','adsd', 'dwdwdqw'
我尝试了以下 function 但它没有替换元素:
def string_convert(column_name):
lista=[]
for i in column_name:
i=i.strip("[]")
i=eval(i)
lista.append(i)
for m in lista:
if m == tuple:
column_name = m[0] + ',' + m[1]
else:
column_name = m
return df['other']
谁能帮我这个? 提前致谢。
根据问题创建者在她自己的答案中包含的新的最终需求,比如生成一个所有值为column1
的最终列表,我建议按如下方式进行:
import pandas as pd
df = pd.DataFrame(columns=['column1','column2'])
df['column1'] = ["'['jjhjh', 'adads','adsd']'","'['adads','adsd']'","'['jjhjh', 'adads','adsd']'","'['adads','adsd']'","'['adads','adsd']'"]
df['column2'] = ['dwdwdqw','dwdwdqw','dwdwdqw','dwdwdqw','dwdwdqw']
df['column1'] = df['column1'].replace('\[|\'|\"|\]| ', '', regex=True)
df['column1'] = df['column1'].str.split(',')
final_list = [x for xs in df['column1'].tolist() for x in xs]
print(final_list)
Output:
['jjhjh', 'adads', 'adsd', 'adads', 'adsd', 'jjhjh', 'adads', 'adsd', 'adads', 'adsd', 'adads', 'adsd']
但我承认这种方法存在风险,因为如果你想要的字符串在单词之间有空格,它们将被删除,所以在你的情况下我仍然认为你应该小心使用。
来自巴西的问候!
这个循环对我有用。
for i, row in df.iterrows():
tmp_val = row['Column1'].replace("'", "").replace("[", "").replace("]", "").split(',')
row['Column1'] = tmp_val
这遍历 DataFrame 的每一行,并通过执行字符串替换来删除不需要的字符(方括号和单引号)来修改 Column1 中的单元格。 Then.split(',') 创建列表,最后一行代码用我们新创建的列表替换原始值。
通过利用str.replace()
:
df.assign(Column1=df['Column1'].str.replace(r"'\[(.*)\]',", r"\1,", regex=True))
Column1 Column2
0 'jjhjh', 'adads','adsd', 'dwdwdqw'
1 'adads','adsd', 'dwdwdqw'
2 'jjhjh', 'adads','adsd', 'dwdwdqw'
3 'adads','adsd', 'dwdwdqw'
4 'adads','adsd', 'dwdwdqw'
我的案例的最佳解决方案是下面的代码,因为我在每个字符串中都有引号、双引号和方括号。 使用此代码,我可以删除所有内容,然后在 For 循环中删除不必要的空格并将每一行拆分为一个列表:
df['column1']=df['column1'].replace('\[|\'|\"|\]', '', regex=True)
df['column1']=df['column1'].str.split(',')
lista=[]
for s in df['column1']:
for a in s:
lista.append(a)
lista1=[b.strip() for b in lista]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.