将值添加到数据框中的新行

时间:2017-02-03 08:22:05

标签: python

我有以下数据框。我现在要做的是添加一个包含单词数量的额外列。

 import pandas as pd
 df = pd.DataFrame([['These are two words', 1], ['Two words', 2]], columns=('body', 'ticketID'))

所以我这样做:

data['Count'] = ''
for index, i in data.iterrows():
  y = len(i['Content'])
  i['Count'] = y

然而,当我现在打印数据时,我看不到计数中的任何值。关于这里出了什么问题的任何建议?

1 个答案:

答案 0 :(得分:0)

我看到你的实施有些问题。

首先,在2个代码块中,您使用的是不同的变量。在第一个中,您的数据框称为df,而在第二个中,它称为data。这是偶然的吗?

其次,您的变量y不计算单词数,而只计算字符串的长度。为了计算字符串中单词的数量,您可以使用len string.split()string.split(',')会在每次遇到空格时分割字符串。如果要拆分另一个角色,可以简单地将角色作为参数:loc

最后,pandas数据帧和系列有3种不同的函数用于索引和选择数据:

  • iloc用于基于标签的索引
  • ix用于基于索引的索引
  • df['Count']用于混合索引

使用这些函数比标准Python索引更受欢迎,例如:将df.loc[:, 'Count']替换为import pandas as pd df = pd.DataFrame([['These are two words', 1], ['Two words', 2]], columns=('body', 'ticketID')) df.loc[:, 'Count'] = '' for idx, row in df.iterrows(): num_words = len(row.loc['body'].split()) df.ix[idx, 'Count'] = num_words >>> df body ticketID Count 0 These are two words 1 4 1 Two words 2 2 。有关此内容的更多信息,请访问in the docs

所以这里有一个你想要的版本:

df.apply

使用df.loc[:, 'count'] = df.apply(lambda row: len(row.loc['body'].split()), axis=1) 函数还有一个很好的Pythonic单线程:

  $scope.obj = {
    name : "ok",
    list : [{object},{object2}]
    }
    var index  =$scope.obj.list.indexOf({object});
    $scope.obj.list.splice(index,1);