【发布时间】:2020-12-12 17:15:18
【问题描述】:
我有以下数据结构。
basket_series = df_train["basket"].head(10)
type(basket_series)
Output: pandas.core.series.Series
0 [3]
1 [5, 3, 0, 3]
2 [3, 3, 1, 4]
3 [2]
4 [4, 4, 4, 4]
5 [4, 3, 4, 4]
6 [3, 4]
7 [4, 4, 1, 4, 4]
8 [1, 5, 2, 2]
9 [5, 5, 0]
我想知道每个“列表”有多少个数字 -> 但我认为“列表”仅被解释为字符串。 我的方法是:
basket_series.size()
output: 10
for x in basket_series:
print(len(x))
output: 3 12 12 3 12 12 6 15 12 9
好像是一样的
basket_series.str.len()
for x in basket_series:
print(len(list(x)))
所以问题是它被视为一个字符串?你有什么想法吗?
【问题讨论】:
-
这是一列列表,还是只是一列“看起来”像列表的字符串。
-
是的,它被表示为一个字符串:好的,当前的方法现在看起来像这样
for x in basket_series: x = ast.literal_eval(x) print(len(x))stackoverflow.com/questions/1894269/… -
这绝对取决于您指定的数据框。 pd.Series 对象可以保存列表。检查你的类型:for x in basket_series: print(type(list(x)))
-
@Daniel 你可以使用
basket_series.map(ast.literal_eval).str.len() -
如果它是一个字符串,您可以使用 json 将其转换为数组。导入json; len(json.loads('[1,2,3,4]'))
标签: python pandas numpy size series