在 Pandas 中旋转包含表单回复的 table
Pivoting a table containing form replies in Pandas
我有一个包含表单回复的数据框(20 个问题 -> 数据框中的 20 列),如下所示:
Name | Q1 | Q2 | Q3 | Q4 | ...
A | Very well | Quite well | Quite well |Not at all | ...
B | Fairly well| Little | Very Little|Not at all | ...
C | Very well | Quite well | Quite well |Fairly well | ...
....
请注意,每个熟练程度级别不一定在每一列中表示。
我想旋转这个 table 以获得如下所示的 table :
Proficiency| Q1 | Q2 | Q3 | Q4 | ...
Very Little|NaN | NaN | B | NaN | ...
Little | NaN | B | ...
Well | NaN |
Quite well | NaN | A,C | ...
Fairly well| B |
Very well | A,C | .......
....
基本上我想得到一个 table,其中包含按问题和熟练程度聚集的人员姓名。我尝试使用 pandas pivot_table 函数,但没能得到我需要的东西。
我设法通过迭代原始数据框并创建新数据框来创建 table。但是,我想知道是否有使用一些 pandas 函数的最简单方法。
尝试:
print(
df.melt("Name").pivot_table(
index="value", columns="variable", values="Name", aggfunc=", ".join
)
)
打印:
variable Q1 Q2 Q3 Q4
value
Fairly well B NaN NaN C
Little NaN B NaN NaN
Not at all NaN NaN NaN A, B
Quite well NaN A, C A, C NaN
Very Little NaN NaN B NaN
Very well A, C NaN NaN NaN
df
使用:
Name Q1 Q2 Q3 Q4
0 A Very well Quite well Quite well Not at all
1 B Fairly well Little Very Little Not at all
2 C Very well Quite well Quite well Fairly well
我有一个包含表单回复的数据框(20 个问题 -> 数据框中的 20 列),如下所示:
Name | Q1 | Q2 | Q3 | Q4 | ...
A | Very well | Quite well | Quite well |Not at all | ...
B | Fairly well| Little | Very Little|Not at all | ...
C | Very well | Quite well | Quite well |Fairly well | ...
....
请注意,每个熟练程度级别不一定在每一列中表示。
我想旋转这个 table 以获得如下所示的 table :
Proficiency| Q1 | Q2 | Q3 | Q4 | ...
Very Little|NaN | NaN | B | NaN | ...
Little | NaN | B | ...
Well | NaN |
Quite well | NaN | A,C | ...
Fairly well| B |
Very well | A,C | .......
....
基本上我想得到一个 table,其中包含按问题和熟练程度聚集的人员姓名。我尝试使用 pandas pivot_table 函数,但没能得到我需要的东西。
我设法通过迭代原始数据框并创建新数据框来创建 table。但是,我想知道是否有使用一些 pandas 函数的最简单方法。
尝试:
print(
df.melt("Name").pivot_table(
index="value", columns="variable", values="Name", aggfunc=", ".join
)
)
打印:
variable Q1 Q2 Q3 Q4
value
Fairly well B NaN NaN C
Little NaN B NaN NaN
Not at all NaN NaN NaN A, B
Quite well NaN A, C A, C NaN
Very Little NaN NaN B NaN
Very well A, C NaN NaN NaN
df
使用:
Name Q1 Q2 Q3 Q4
0 A Very well Quite well Quite well Not at all
1 B Fairly well Little Very Little Not at all
2 C Very well Quite well Quite well Fairly well