2017-02-08 5 views
3

Этот вопрос относится к how to check the dtype of a column in python pandas.Как проверить dtype содержимого столбца в python pandas?

Создана пустая рамка данных pandas. После этого он заполняется данными. Как я могу затем проверить, содержит ли какой-либо из его столбцов типы complex?

index = [np.array(['foo', 'qux'])] 
columns = ["A", "B"] 
df = pd.DataFrame(index=index, columns=columns) 
df.loc['foo']["A"] = 1 + 1j 
df.loc['foo']["B"] = 1 
df.loc['qux']["A"] = 2 
df.loc['qux']["B"] = 2 

print df 
for type in df.dtypes: 
    if type == complex: 
     print type 

На данный момент я получаю тип как object, который не является полезным.

  A B 
foo (1+1j) 1 
qux  2 2 
+0

Вы должны были бы сделать 'тип (DF ['A']. Iloc [0]) 'при условии, что все значения одинаковы, dtype' np.object' используется для представления объекта python – EdChum

+0

Вы можете сделать 'isinstance (df.A.iloc [0 ], complex) '? – Zero

+0

@EdChum в моем случае некоторые из значений являются реальными, а некоторые сложными! – bluprince13

ответ

2

Рассмотрим ряд s

s = pd.Series([1, 3.4, 2 + 1j], dtype=np.object) 
s 

0   1 
1  3.4 
2 (2+1j) 
dtype: object 

Если я использую pd.to_numeric, он будет в dtype базовому типу к complex если сложны

pd.to_numeric(s).dtype 

dtype('complex128') 
+0

Для всех, кто наткнулся на это, вы можете применить это ко всей кадре данных с помощью 'df.apply (pd.to_numeric)' – bluprince13