如何根据条件向熊猫数据框中的新列添加级别?

法比亚诺·鲁杰里

我有巨大的数据框,看起来像这样:

     Col1      Col2
0.   'w1'.     'N/A'
1.   'w2'       4.3
2.   'w3'.      1.2
4.   'w4'.      3.5
5.   'w5'      'N/A'
6.   'w6'.      3.1
7.   'w7'.      2.4
8.   'w8'.      1.7
9.   'w9'.      4.6
10.  'w10'.    'N/A'
11.  'w11'.     3.0

我在第一列中有字符串。在第二列中,我在某些行中有浮点数和“N/A”字符串。col1 中的字符串是问题的答案选项,col2 中的浮点数是答案平均值。计数和“N/A”字符串是问题本身。我的意图是在此数据框中创建另一个名为“Question_number”的列,其级别(Q1、Q2、Q3 ...)每次在 col2 中出现新的“N/A”行时都会发生变化。因此,我想要的输出是:

     Col1    Col2      Col3
0.   'Q1'     'w1'.    'N/A'
1.   'Q1'     'w2'      4.3
2.   'Q1'     'w3'.     1.2
4.   'Q1'     'w4'.     3.5
5.   'Q2'     'w5'     'N/A'
6.   'Q2'     'w6'.     3.1
7.   'Q2'.    'w7'.     2.4
8.   'Q2'     'w8'.     1.7
9.   'Q3'     'w9'.    'N/A'
10.  'Q3'     'w10'.    2.0
11.  'Q3'     'w11'.    3.0

谁能帮我这个?我试过这个:

df['question_number']=np.where(df['counts']=='N/A', "Q1", "Q2", 'Q3')

但这不起作用,我不知道如何做到这一点。有人可以帮忙吗?

托马斯

更新:@enke 的评论比我的代码干净得多。如果要将新列放在第一个位置,只需先添加该列。

# insert new column in first position
df.insert(0,'new','')
# Line from @enke's comment
df['new'] = 'Q'+df['Col2'].eq('N/A').cumsum().astype(str)

我的原帖在下面,如果你愿意,你可以忽略!

我在第一列位置插入了一个新列,然后循环遍历每一行。我重命名列名只是因为我可以。:DI 没有在您的原始 df 中包含引号和句点。但是下面的代码可能仍然有用。

import pandas as pd

cols = ['Answer', 'Avg_Score']
data=[['w1', 'N/A'],
['w2', 4.3],
['w3', 1.2],
['w4', 3.5],
['w5', 'N/A'],
['w6', 3.1],
['w7', 2.4],
['w8', 1.7],
['w9', 4.6],
['w10', 'N/A'],
['w11', 3.0]]

df = pd.DataFrame(data, columns = cols)
# insert new column before the Answer and the Avg_Score
df.insert(0,'Question','')

# start the question counter at 0
qnum = 0

# loop through each row
for index,row in df.iterrows():
    # if 'N/A' found increase the question counter
    # this assume first row will always have an 'N/A'
    if df.loc[index,'Avg_Score'] == 'N/A':
        qnum += 1
    df.loc[index,'Question'] = 'Q{}'.format(qnum)

print(df)

输出:

   Question Answer Avg_Score
0        Q1     w1       N/A
1        Q1     w2       4.3
2        Q1     w3       1.2
3        Q1     w4       3.5
4        Q2     w5       N/A
5        Q2     w6       3.1
6        Q2     w7       2.4
7        Q2     w8       1.7
8        Q2     w9       4.6
9        Q3    w10       N/A
10       Q3    w11       3.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据另一列中满足的条件在熊猫数据框中添加新列?

如何根据条件在熊猫数据框中创建新列?

如何简单地向熊猫数据框添加列级别

如何向熊猫数据框添加列级别

根据条件在熊猫数据框中添加新列,并替换不同列中的Nan值

根据 R 中其他两列的几个条件向数据框添加新列

根据条件在熊猫数据框中添加新行

根据熊猫中的多个条件添加新的数据框

根据R中的条件向数据框添加多个新列

如何根据条件从2个列表中向熊猫添加新列

根据其他数据框向熊猫数据框添加新列

如何根据其他两列中的值在熊猫数据框中添加新列

如何根据 Python 数据框中现有的值向新列添加值?

如何根据一些规则向数据框中添加几个新列

如何根据 r 中的年增长率向数据框添加新列?

如何根据特定条件在数据框熊猫中的列上添加一列

根据现有列的值向熊猫数据框添加新列

如何在具有两个条件的熊猫数据框中添加新列?

根据给定条件向现有数据框列添加新列

如何在RCpp中向数据框添加新列?

熊猫:比较数据框的列并根据条件添加新的列和值

向数据框中添加条件列

如何根据条件在数据框中创建新列

根据给定条件向现有数据框添加多个新列

向数据框添加新级别

在熊猫数据框中添加新列

根据其他数据框中的索引列表从其他数据框中向数据框中添加新列

熊猫-从字典向数据框添加新列

向熊猫数据框添加n个新列