pandas DataFrame 创建、访问、附加具有不同列类型的 MultiIndex - SQL table 样式

pandas DataFrame create,access,append MultiIndex with different Column types - SQL table style

我认为通过使用巨大的 pandas.DataFrame 库,可以非常直接地完成所有标准的事情,你可以用 SQL table ..但是在查看之后很多选项我还没有找到一个好的工作解决方案。

要求:


               y  0  1  2  3  4  5  6  7  8  9
A   B   C                                     
NaN NaN NaN  NaN  0  0  0  0  0  0  0  0  0  0
        NaN  NaN  0  0  0  0  0  0  0  0  0  0
        NaN  NaN  0  0  0  0  0  0  0  0  0  0
        NaN  NaN  0  0  0  0  0  0  0  0  0  0
        NaN  NaN  0  0  0  0  0  0  0  0  0  0

现在我想通过提供索引在列 (y,0, ...9) 中设置值。 如果索引尚不可用,则应将其添加到 table.

t( (t['A']='US',t['B']='CA',t['C']='SFO') , 'y') = "IT"
t( (t['A']='US',t['B']='CA',t['C']='LA' ) , '1') = 255

假设您有以下 multi-index DataFrame:

In [44]: df
Out[44]:
       d
a b c
0 0 1  1
4 4 4  3
0 1 4  4
2 6 1  3
0 1 3  6

并且您想将以下二维数组添加为 10 个新列:

In [45]: data
Out[45]:
array([[ 0.76021523,  0.92020945,  0.20205685,  0.03888115,  0.41166093,  0.67509844,  0.15351393,  0.00926459,  0.09297956,  0.72930072],
       [ 0.38229582,  0.88199428,  0.08153019,  0.08367272,  0.88548522,  0.50332168,  0.94652147,  0.83362442,  0.219431  ,  0.09399454],
       [ 0.43743926,  0.79447959,  0.18430898,  0.31534202,  0.63229928,  0.80921108,  0.76570853,  0.09890863,  0.33604303,  0.92960105],
       [ 0.6561763 ,  0.26731786,  0.1266551 ,  0.78960943,  0.900017  ,  0.02468355,  0.99110764,  0.40402032,  0.46224193,  0.44569296],
       [ 0.1509643 ,  0.26830514,  0.69337022,  0.1339183 ,  0.42711838,  0.0883597 ,  0.6923594 ,  0.01451872,  0.56684861,  0.46792245]])

解法:

In [47]: df = df.join(pd.DataFrame(data, index=df.index))

In [48]: df
Out[48]:
       d         0         1         2         3         4         5         6         7         8         9
a b c
0 0 1  1  0.760215  0.920209  0.202057  0.038881  0.411661  0.675098  0.153514  0.009265  0.092980  0.729301
4 4 4  3  0.382296  0.881994  0.081530  0.083673  0.885485  0.503322  0.946521  0.833624  0.219431  0.093995
0 1 4  4  0.437439  0.794480  0.184309  0.315342  0.632299  0.809211  0.765709  0.098909  0.336043  0.929601
2 6 1  3  0.656176  0.267318  0.126655  0.789609  0.900017  0.024684  0.991108  0.404020  0.462242  0.445693
0 1 3  6  0.150964  0.268305  0.693370  0.133918  0.427118  0.088360  0.692359  0.014519  0.566849  0.467922