如何知道给定列或整个数据集中具有不同形状的单元格?
我遇到一个问题,在我的数据的某些位置,单元格具有多个数字,例如(1,2)或[1,2],而不是只有一个数字(只需要一个数字。)
例如
df = pd.DataFrame({'column1': [1,2,3,4, (4,5), [5,6,7]], 'column2': [1,2,3,4,5,6]})
然后我得到
column1 column2
0 1 1
1 2 2
2 3 3
3 4 4
4 (4, 5) 5
5 [5, 6, 7] 6
(以上仅是示例。对于我的实际情况,数据是从CSV导入的,因此每个单元格的type
应该是np.float
或其他)
如何识别多个单元格?
答案 0 :(得分:0)
这可以解决问题:
df[df.column1.str.len() > 1]
答案 1 :(得分:0)
检查您的dtypes
。在所有单元格中仅包含一个数字的列将具有数字dtype,例如np.float64
或np.int64
。
混合的单元格将保留object
dtype。
df.dtypes == np.object
column1 True
column2 False
dtype: bool
然后,您可以使用apply
访问器len
str
。由于此操作无法矢量化,因此至少要进行预筛选列会减少工作量
df.loc[:, df.dtypes == np.object].apply(lambda s: s.str.len() > 1)
column1
0 False
1 False
2 False
3 False
4 True
5 True
如果您知道,则单元格将仅包含np.nan
,列表和整数,并且您只希望发现具有列表的列,只需检查dtype
即可。 / p>