根据预先存在的值

时间:2017-03-20 20:05:17

标签: python pandas dataframe

对于Dataframe,如何根据列中预先存在的值执行条件语句来分配新值?

  • 如果Column的值包含len(> 0)字符串;然后分配一个值= 0
  • 如果Column的值为None(NoneType),则分配1

我试图让一个计数器根据字符串长度检查有多少行缺少值。

我可以将系列转换为列表并进行测试,但我想了解数据框本身是如何实现的。

Dataframe.Series

df['old']   df['old'] (after)

String A       0
String B       0
String C       0
None           1
String D       0
String E       0
None           1

#So that I can sum the df['old'](after) to get counter value 
Sum            2

3 个答案:

答案 0 :(得分:0)

你只是想看看你有多少人?

你可以这样做

import pandas as pd


df = pd.DataFrame(['a', 'b', None, 'q'], columns=['old'])
df['old'].isnull().sum()

Out[37]: 
1

答案 1 :(得分:0)

如果要将字符串转换为1值而将None转换为0,则可以应用lambda函数:

import pandas as pd
x = pd.DataFrame(['S', 'X', 'Z', None, 'B'])

x[0] = x[0].apply(lambda x: 1 if x else 0)

然后,要计算一个值,可以使用sum:

x[0].sum()

答案 2 :(得分:0)

对于快速矢量化解决方案,只需使用$scope.fruitOrVeg = function() { return function(item) { return ['1', '4', '5'].indexOf(item.id) > -1; } 方法并乘以1即可转换为整数。

isnull

输出:

df = pd.DataFrame({'col' :['a','b',None, None, 'sdaf']})
df['count'] = df.col.isnull() * 1