it-swarm.asia

تحويل عمود داخل قاعدة بيانات الباندا من int إلى string

لديّ dataframe في الباندا مع أعمدة بيانات int و str مختلطة. أريد أن أسلسل الأعمدة أولاً داخل إطار البيانات. للقيام بذلك ، يتعين علي تحويل عمود int إلى str. لقد حاولت أن أفعل ما يلي:

mtrx['X.3'] = mtrx.to_string(columns = ['X.3'])

أو

mtrx['X.3'] = mtrx['X.3'].astype(str)

لكن في كلتا الحالتين ، لا يعمل هذا الأمر ، وأظهر لي رسالة خطأ "لا يمكن توصيل كائنات" str "و" int ". يعمل تسلسل عمودين str بشكل جيد تمامًا.

74
Malfet
In [16]: df = DataFrame(np.arange(10).reshape(5,2),columns=list('AB'))

In [17]: df
Out[17]: 
   A  B
0  0  1
1  2  3
2  4  5
3  6  7
4  8  9

In [18]: df.dtypes
Out[18]: 
A    int64
B    int64
dtype: object

تحويل سلسلة

In [19]: df['A'].apply(str)
Out[19]: 
0    0
1    2
2    4
3    6
4    8
Name: A, dtype: object

In [20]: df['A'].apply(str)[0]
Out[20]: '0'

لا تنس تعيين النتيجة مرة أخرى:

df['A'] = df['A'].apply(str)

تحويل الإطار بأكمله

In [21]: df.applymap(str)
Out[21]: 
   A  B
0  0  1
1  2  3
2  4  5
3  6  7
4  8  9

In [22]: df.applymap(str).iloc[0,0]
Out[22]: '0'
df = df.applymap(str)
86
Jeff

تغيير نوع بيانات عمود DataFrame:

إلى الباحث:

df.column_name = df.column_name.astype(np.int64)

إلى str:

df.column_name = df.column_name.astype(str)

69
tanaque

تحذير : كلا الحلول المعطاة (astype () وتطبيق ()) لا تحتفظ بقيم NULL في النموذج nan أو بلا.

import pandas as pd
import numpy as np

df = pd.DataFrame([None,'string',np.nan,42], index=[0,1,2,3], columns=['A'])

df1 = df['A'].astype(str)
df2 =  df['A'].apply(str)

print df.isnull()
print df1.isnull()
print df2.isnull()

أعتقد أن هذا تم إصلاحه عن طريق تنفيذ to_string ()

11
Keith