首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用for循环在Pandas dataframe中创建新列

如何使用for循环在Pandas dataframe中创建新列
EN

Stack Overflow用户
提问于 2022-08-18 00:45:01
回答 1查看 160关注 0票数 0

假设我有这个数据

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame({'Verbatim': ['Pants', 'Shirts', 'Shirts', 'Pants', 'Shoes', 'Shoes', 'Shoes', 'Shoes', 'Dresses, Shoes, Dresses', 'Pants', 'Pants', 'Shirts', 'Dresses Pants Shoes', 'Shoes Pants', 'Pants', 'Pants', 'Dresses', 'Pants', 'Pants', 'Dresses']})

通过不同的步骤,我确定了我在上面所有独特的单词是

代码语言:javascript
复制
unique_words = ('Pants', 'Shirts', 'Shoes', 'Dresses')

现在,我想在我的数据框架中添加列,表示“逐字”列中每个唯一单词的存在。我是从逐字文本创建假人。因此,如果被调查者在回答中注意到“着装”,他们会在着装栏中得到1分。

如何使用循环/apply语句来实现自动化?我想做这样的事

代码语言:javascript
复制
for word in unique_words:
    df['word'] = 0
    df.loc[df['Verbatim'].str.contains("word"), 'word'] = 1

本质上,我想知道如何使用迭代器('word')在一个以与该迭代器相同的名称命名的dataframe中创建列。如何引用循环中的迭代器?这段代码是手动工作的,但我不知道如何循环它。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-08-18 00:50:20

您可以使用apply函数:

代码语言:javascript
复制
for word in unique_words:
    df[word] = df.apply(lambda x: word in x["Verbatim"], axis=1)

print(df.head()

产出如下:

代码语言:javascript
复制
  Verbatim  Pants  Shirts  Shoes  Dresses
0    Pants   True   False  False    False
1   Shirts  False    True  False    False
2   Shirts  False    True  False    False
3    Pants   True   False  False    False
4    Shoes  False   False   True    False

如果你不喜欢这样的类型,你可以把0和1放在下面:

代码语言:javascript
复制
for word in unique_words:
    df[word] = df.apply(lambda x: 1 if word in x["Verbatim"] else 0, axis=1)

print(df.head())

其结果是:

代码语言:javascript
复制
  Verbatim  Pants  Shirts  Shoes  Dresses
0    Pants      1       0      0        0
1   Shirts      0       1      0        0
2   Shirts      0       1      0        0
3    Pants      1       0      0        0
4    Shoes      0       0      1        0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73396289

复制
相关文章

相似问题

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