对于Dataframe,如何根据列中预先存在的值执行条件语句来分配新值?
我试图让一个计数器根据字符串长度检查有多少行缺少值。
我可以将系列转换为列表并进行测试,但我想了解数据框本身是如何实现的。
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
答案 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