我希望使用以下代码提取每个列表的第0个成员:
df["column"].apply(lambda x: x[0])
但是我收到了以下错误:
TypeError:'float'对象不可订阅。
答案 0 :(得分:1)
我认为问题是一些NaN
的值。
您可以查看:
print (df[df["column"].isnull()])
column
2 NaN
所以你可以使用str[0]
:
df["column"].str[0]
样品:
df = pd.DataFrame({'column':[['a','s'],['d'], np.nan, ['s','d','f']]})
print (df)
column
0 [a, s]
1 [d]
2 NaN
3 [s, d, f]
df['new'] = df["column"].str[0]
print (df)
column new
0 [a, s] a
1 [d] d
2 NaN NaN
3 [s, d, f] s
print (df["column"].apply(lambda x: x[0]))
TypeError:'float'对象不可订阅
float
与scalar
之间list
之间的df = pd.DataFrame({'column':[[4.4,7.8],[1], 4.7, [4, 7.4, 1.2]]})
print (df)
column
0 [4.4, 7.8]
1 [1]
2 4.7
3 [4, 7.4, 1.2]
同样错误:
list
您可以检查所有非print (df[df["column"].apply(lambda x: isinstance(x, float))])
column
2 4.7
的值:
if-else
解决方案是使用print (df["column"].apply(lambda x: x if isinstance(x, float) else x[0]))
0 4.4
1 1.0
2 4.7
3 4.0
Name: column, dtype: float64
和lambda函数:
var params = { "id": templateCategoryId };
this.http.get(this.appService.baseUrl + 'api/UserList', { params: params }).subscribe(result => {.....
......