如何知道给定列中具有不同形状的单元格

时间:2018-11-03 03:03:33

标签: python pandas

如何知道给定列或整个数据集中具有不同形状的单元格?

我遇到一个问题,在我的数据的某些位置,单元格具有多个数字,例如(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或其他)

如何识别多个单元格?

2 个答案:

答案 0 :(得分:0)

这可以解决问题:

df[df.column1.str.len() > 1]

答案 1 :(得分:0)

检查您的dtypes。在所有单元格中仅包含一个数字的列将具有数字dtype,例如np.float64np.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>