首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Pandas Dataframe提取Frozenset项目

从Pandas Dataframe提取Frozenset项目
EN

Stack Overflow用户
提问于 2019-10-14 07:55:01
回答 2查看 2.8K关注 0票数 2

我有以下数据:

我希望将列“前置”和“结果”转换为字符串,删除"frozenset({ . })“格式,从而对所有行具有:

“文托林S.INAL200D 100”,而不是冻结({“文托林S.INAL200D 100”})。

我设法取得了以下结果:

代码语言:javascript
复制
prod = []

for i in df["antecedents"]:
    prod.append(str(i))

new_set = {x.replace('frozenset', ''
                     ).replace('})', ''
                        ).replace('({', ''
                        ).replace("'", "") for x in prod}

还有更多的丙酮溶液吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-14 08:06:09

首先将值转换为元组或列表,然后使用DataFrame.explode

代码语言:javascript
复制
df = pd.DataFrame({
         'antecedents':[frozenset({'aaa', 'bbb'})] * 3 + [frozenset({'nbb'})] * 3,
         'consequents':[frozenset({'ccc'})] * 3 + [frozenset({'nbb', 'ddd'})] * 3,
         'C':[1,3,5,7,1,0],
})
#print (df)

cols = ['antecedents','consequents']
df[cols] = df[cols].applymap(lambda x: tuple(x))
print (df)
  antecedents consequents  C
0  (bbb, aaa)      (ccc,)  1
1  (bbb, aaa)      (ccc,)  3
2  (bbb, aaa)      (ccc,)  5
3      (nbb,)  (nbb, ddd)  7
4      (nbb,)  (nbb, ddd)  1
5      (nbb,)  (nbb, ddd)  0

代码语言:javascript
复制
df1 = (df.explode('antecedents')
         .reset_index(drop=True)
         .explode('consequents')
         .reset_index(drop=True))
print (df1)
   antecedents consequents  C
0          bbb         ccc  1
1          aaa         ccc  1
2          bbb         ccc  3
3          aaa         ccc  3
4          bbb         ccc  5
5          aaa         ccc  5
6          nbb         nbb  7
7          nbb         ddd  7
8          nbb         nbb  1
9          nbb         ddd  1
10         nbb         nbb  0
11         nbb         ddd  0
票数 1
EN

Stack Overflow用户

发布于 2022-08-12 20:44:10

首先,将两列的“前因”和“结果”转换为字符串,如下所示:

代码语言:javascript
复制
df['antecedents'] = df['antecedents'].astype('string')
df['consequents'] = df['consequents'].astype('string')

然后从‘前面’和‘结果’这两个列中删除前缀"frozenset({“和后缀"})”:

代码语言:javascript
复制
df['antecedents'] = df['antecedents'].str.removeprefix("frozenset({")
df['antecedents'] = df['antecedents'].str.removesuffix("})")

df['consequents'] = df['consequents'].str.removeprefix("frozenset({")
df['consequents'] = df['consequents'].str.removesuffix("})")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58372327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档