我有一个包含一列的数据框.以下是示例
Questionsbysortorder
Q1-4,Q2-3,Q3-2,Q4-3,Q5-3
Q1-1,Q2-2,Q3-1,Q4-1
Q1-5,Q2-3,Q3-3
我试图利用已经给定的行值来分解列.下面是一个例子
Questionsbysortorder Q1 Q2 Q3 Q4 Q5
Q1-4,Q2-3,Q3-2,Q4-3,Q5-3 4 3 2 3 3
Q1-1,Q2-2,Q3-1,Q4-1 1 2 1 1 NA
Q1-5,Q2-3,Q5-3 5 3 NA NA 3
下面是我try 的代码,但返回了一个错误
import pandas as pd
import numpy as np
df = pd.DataFrame({'Questionsbysortorder': ['Q1-4,Q2-3,Q3-2,Q4-3,Q5-3', 'Q1-1,Q2-2,Q3-1,Q4-1','Q1-5,Q2-3,Q5-3']})
df['Questionsbysortorder'] = df['Questionsbysortorder'].str.split(',')
df = df.explode('Questionsbysortorder')
df['Questionsbysortorder'] = df['Questionsbysortorder'].str.split('-')
df = df.explode('Questionsbysortorder')
df = df.set_index('Questionsbysortorder').unstack().reset_index()
df.columns = ['Questionsbysortorder', 'value']
df = df.pivot(index='Questionsbysortorder', columns='value', values='Questionsbysortorder')
df.columns.name = None
print(df)
错误为:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-30dd8b8d4f59> in <module>()
14 df = df.set_index('Questionsbysortorder').unstack().reset_index()
15
---> 16 df.columns = ['Questionsbysortorder', 'value']
17
18 df = df.pivot(index='Questionsbysortorder', columns='value', values='Questionsbysortorder')
4 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/internals/base.py in _validate_set_axis(self, axis, new_labels)
56 elif new_len != old_len:
57 raise ValueError(
---> 58 f"Length mismatch: Expected axis has {old_len} elements, new "
59 f"values have {new_len} elements"
60 )
ValueError: Length mismatch: Expected axis has 3 elements, new values have 2 elements
谁能帮我一下吗?