根据dataframe中特定列中的值添加列

2024-06-01 00:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图操纵我的数据帧,但是,我搜索了一段时间,没有找到答案。如果这个问题重复,我真诚地向你道歉

我有这样一个数据帧(df):

import pandas as pd
data = {'A': ['Emo/3', 'Emo/4', 'Emo/1', '', 'Neu/5', 'Neu/2'],
        'Height': [5.1, 6.2, 5.1,'', 5.2, 5.2],
        }
df = pd.DataFrame(data)
df
    A       Height
0   Emo/3   5.1
1   Emo/4   6.2
2   Emo/1   5.1
3       
4   Neu/5   5.2
5   Neu/2   5.2

我想添加另一列“B”,以便“B”的值基于列“A”。如果a列中的一行包含某个字符串,则B列中的同一行将是一个数字:例如,如果a列中的“Emo/”,则B列为0。如果列中的行为空,则同一行中的colmn B也为空。输出应如下所示:

    A      Height   B
0   Emo/3   5.1     0
1   Emo/4   6.2     0
2   Emo/1   5.1     0
3           
4   Neu/5   5.2     1
5   Neu/2   5.2     1

目前,我有下面的代码,但它给了我一条错误消息:“TypeError:类型为'float'的参数不可iterable”

df["B"]=""
for index, row in df.iterrows:
  if "Emo/" in row["A"]:
    row["B"]=0
  elif "Neu/" in row['A']:
    row['B']=1
  elif row['A']=="":
    row['B']=""

任何建议都有帮助!谢谢


Tags: 数据答案inimportdataframepandasdfdata
1条回答
网友
1楼 · 发布于 2024-06-01 00:22:26

zlipp所述,方法调用中缺少括号:

for index, row in df.iterrows():
#                            ^^

但是,请注意^{} should be avoided whenever possible

我建议使用^{}。使用^{}(或^{})构建条件并设置default=''

conditions = [
    df['A'].str.contains('Emo/'),
    df['A'].str.contains('Neu/'),
]
choices = [
    0,
    1,
]

df['B'] = np.select(conditions, choices, default='')
#        A Height  B
# 0  Emo/3    5.1  0
# 1  Emo/4    6.2  0
# 2  Emo/1    5.1  0
# 3                 
# 4  Neu/5    5.2  1
# 5  Neu/2    5.2  1

相关问题 更多 >