Python 熊猫:水平展开/分解数据帧
这可能是重复的,但我找不到所需的答案。 所以,问题是: 假设我有一个这样的数据帧:Python 熊猫:水平展开/分解数据帧,python,python-3.x,pandas,dataframe,pandas-groupby,Python,Python 3.x,Pandas,Dataframe,Pandas Groupby,这可能是重复的,但我找不到所需的答案。 所以,问题是: 假设我有一个这样的数据帧: d1 = {'col1': [[1],[2,3]], 'col2' : [[3],[21,1]]} df1 = pd.DataFrame(d1) 可乐 可乐 0 [1] [3] 1. [2, 3] [21, 1] x=pd.concat( [df1[c].应用(pd.Series).为df1中的c添加前缀(c+“u”),轴=1 ) 打印(x) 印刷品: col1\u 0 col1\u 1 co
d1 = {'col1': [[1],[2,3]],
'col2' : [[3],[21,1]]}
df1 = pd.DataFrame(d1)
可乐
可乐
0
[1]
[3]
1.
[2, 3]
[21, 1]
x=pd.concat(
[df1[c].应用(pd.Series).为df1中的c添加前缀(c+“u”),轴=1
)
打印(x)
印刷品:
col1\u 0 col1\u 1 col2\u 0 col2\u 1
0 1.0 NaN 3.0 NaN
1 2.0 3.0 21.0 1.0
如果需要基于1的索引列,请执行以下操作:
x=pd.concat(
[df1[c].应用(pd.Series).为df1中的c添加前缀(c+“u”),轴=1
).重命名(
columns=lambda x:“{}}{}”。格式(x.split(“{”)为[0],int(x.split(“{”)为[1])+1)
)
打印(x)
印刷品:
col1\u 1 col1\u 2 col2\u 1 col2\u 2
0 1.0 NaN 3.0 NaN
1 2.0 3.0 21.0 1.0
试试这个
d1 = {'col1': [[1],[2,3]],
'col2' : [[3],[21,1]]}
df1 = pd.DataFrame(d1)
col_names = []
for col in list(df1):
for col_number in range(max(df1[col].apply(len))):
col_names.append(col + "_" + str(col_number + 1))
df2 = pd.concat([pd.DataFrame(df1.col1.tolist(), index= df1.index), pd.DataFrame(df1.col2.tolist(), index = df1.index)], axis = 1)
df2.columns = col_names