#python #pandas
#python #pandas
Вопрос:
Как я могу определить имя столбцов, которые содержат только кортежи в Pandas?
import pandas as pd
df = pd.DataFrame({'I':[1,2,3,4], 'C':[80,160,240,80], "D":[[1,2], [1,2],[1,2], [1,2]],
'F':[(1,2,3,4),(5,7,2),(9,6,2,5,7),(4,0,8,3,2)]})
df
I C D F
0 1 80 [1, 2] (1, 2, 3, 4)
1 2 160 [1, 2] (5, 7, 2)
2 3 240 [1, 2] (9, 6, 2, 5, 7)
3 4 80 [1, 2] (4, 0, 8, 3, 2)
df.dtypes
I int64
C int64
D object
F object
dtype: object
Я подумал о поиске object
типа данных. Но объекты, отличные от кортежей, могут привести к object
типу данных.
Ответ №1:
Вы можете выполнить итерацию по столбцу F и проверить, все ли значения являются кортежами.
Если все значения являются кортежами, то результатом этого будет True, иначе False .
print (all(isinstance(x,tuple) for x in df['F']))
Результатом этого будет
True
Если вы хотите проверить наличие всех столбцов во фрейме данных, вы можете указать что-то вроде этого:
for i in df.columns:
print ('column :',i, 'is a tuple : ', all(isinstance(x,tuple) for x in df[i]))
Результатом этого будет:
column : I is a tuple : False
column : C is a tuple : False
column : D is a tuple : False
column : F is a tuple : True
Ответ №2:
Вы должны быть в состоянии проверить это с помощью isinstance
isinstance(df.F[0],tuple)
# True
Если вы хотите проверить все значения в столбце, вам нужно выполнить цикл:
for i in df.F:
print(isinstance(i,tuple))
#True
#True
#True
#True
Ответ №3:
Вы можете использовать этот код
for i in df.keys():
if(isinstance(df[i][0], tuple)): # true when tuple encountered
print(i)