モックDF:道のうち
df = pd.DataFrame(columns=['Name', 'List 1', 'List 2'], data=[['A', [1,2,3,4], [1,2,3,4]], ['B', [1,2,3,4], [1,2,3,4]], ['C', [1,2,3,4], [1,2,3,4]]])
GET '名前':
df.set_index('Name', inplace=True)
List 1 List 2
Name
A [1, 2, 3, 4] [1, 2, 3, 4]
B [1, 2, 3, 4] [1, 2, 3, 4]
C [1, 2, 3, 4] [1, 2, 3, 4]
n_name = len(df.index)
n_list = len(df.columns)
n_item = len(df.iat[0, 0])
DF値は、現在(3,2)の形状を有しています。このモックdfで、1次元を削除するために(6、)配列に変更する必要があります。その後、それをリストにします。
vals = list(df.values.reshape((n_list * n_name),))
[[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4]]
ここでインデックスレベルの値を取得します。 'Name'は最初のレベルなので、そのレベルを次のレベルの一意の値の数だけ繰り返すので、repeatを使用します。リストのレベルは、我々はタイルを使用するので、我々は順序を維持したい。次に、あなたのカラム名が追加されます。
idx_name = np.repeat(df.index.values, n_list)
idx_list = np.tile(df.columns.values, n_name)
columns = ['Col' + str(n) for n in list(range(1, n_item+1))]
は、最終的なDFを作成します。
df = pd.DataFrame(data=vals, index=[idx_name, idx_list], columns=columns)
Col1 Col2 Col3 Col4
A List 1 1 2 3 4
List 2 1 2 3 4
B List 1 1 2 3 4
List 2 1 2 3 4
C List 1 1 2 3 4
List 2 1 2 3 4
コード:
df = pd.DataFrame(columns=['Name', 'List 1', 'List 2'], data=[['A', [1,2,3,4], [1,2,3,4]], ['B', [1,2,3,4], [1,2,3,4]], ['C', [1,2,3,4], [1,2,3,4]]])
df.set_index('Name', inplace=True)
n_name = len(df.index)
n_list = len(df.columns)
n_item = len(df.iat[0, 0])
vals = list(df.values.reshape((n_list * n_name),))
idx_name = np.repeat(df.index.values, n_list)
idx_list = np.tile(df.columns.values, n_name)
columns = ['Col' + str(n) for n in list(range(1, n_item+1))]
df = pd.DataFrame(data=vals, index=[idx_name, idx_list], columns=columns)
を使用すると、データフレームのサンプルを提供しなければならない、我々はので、テスト 'test_table'をカント'row_list'変数はありません。 [再現可能なパンダの例](https://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)の作成方法をお読みください。 – DJK