【发布时间】:2020-12-28 16:40:06
【问题描述】:
我创建了一个字典,其中包含以下数据
x = {'a': [[1,2,3], [4,5,6]], 'b': [[7,8,9],[10,11,12]]}
我想创建一个看起来像这样的数据框,
我应该如何实现它?
【问题讨论】:
我创建了一个字典,其中包含以下数据
x = {'a': [[1,2,3], [4,5,6]], 'b': [[7,8,9],[10,11,12]]}
我想创建一个看起来像这样的数据框,
我应该如何实现它?
【问题讨论】:
在列表理解中创建 DataFrames 并通过concat 加入:
df = pd.concat({k: pd.DataFrame(v).T for k, v in x.items()}, axis=1)
print(df)
a b
0 1 0 1
0 1 4 7 10
1 2 5 8 11
2 3 6 9 12
另一个想法是使用dict理解来改变原始格式(性能应该更好):
d = {(k, i):y for k, v in x.items() for i, y in enumerate(v)}
print (d)
{('a', 0): [1, 2, 3], ('a', 1): [4, 5, 6], ('b', 0): [7, 8, 9], ('b', 1): [10, 11, 12]}
df = pd.DataFrame(d)
print (df)
a b
0 1 0 1
0 1 4 7 10
1 2 5 8 11
2 3 6 9 12
【讨论】:
pd.DataFrame(v).T 更改为pd.DataFrame(v).T. add_prefix('index')
df = df.rename(columns={0:'abc', 1:'xyz'}, level=1)这样的重命名
df = pd.DataFrame() for k, v in x.items(): df_zero = pd.concat({k: pd.DataFrame(v[0], columns=['abc'])}, axis=1) df_one = pd.concat({k: pd.DataFrame(v[1], columns=['xyz'])}, axis=1) frame = [df, df_zero, df_one] df = pd.concat(frame, axis=1) 但是,您的回答更简洁。