What are the reasons that pandas DataFrame values are implemented as C-contiguous numpy array for numeric data types and as F-contiguous numpy array for string (object) data types?
import numpy as np, pandas as pd
ai = np.array([[0,1,2],[3,4,5]], dtype=np.int64)
af = np.array([[0.,1.,2.],[3.,4.,5.]], dtype=np.float64)
ao = np.array([['000','111','222'],['333','444','555']], dtype=object)
print('C-contiguous:',
' i=',ai.flags['C_CONTIGUOUS'],
' f=',af.flags['C_CONTIGUOUS'],
' o=',ao.flags['C_CONTIGUOUS'],sep='')
print('C-contiguous:',
' i=',pd.DataFrame(ai).values.flags['C_CONTIGUOUS'],
' f=',pd.DataFrame(af).values.flags['C_CONTIGUOUS'],
' o=',pd.DataFrame(ao).values.flags['C_CONTIGUOUS'],sep='')
gives
C-contiguous: i=True f=True o=True
C-contiguous: i=True f=True o=False
Thank you for your help!