【发布时间】:2018-02-09 20:52:58
【问题描述】:
我有一个如下所示的数据框(前 3 行):
Sample_Name Sample_ID Sample_Type IS Component_Name IS_Name Component_Group_Name Outlier_Reasons Actual_Concentration Area Height Retention_Time Width_at_50_pct Used Calculated_Concentration Accuracy
Index
1 20170824_ELN147926_HexLacCer_Plasma_A-1-1 NaN Unknown True GluCer(d18:1/12:0)_LCB_264.3 NaN NaN NaN 0.1 2.733532e+06 5.963840e+05 2.963911 0.068676 True NaN NaN
2 20170824_ELN147926_HexLacCer_Plasma_A-1-1 NaN Unknown True GluCer(d18:1/17:0)_LCB_264.3 NaN NaN NaN 0.1 2.945190e+06 5.597470e+05 2.745026 0.068086 True NaN NaN
3 20170824_ELN147926_HexLacCer_Plasma_A-1-1 NaN Unknown False GluCer(d18:1/16:0)_LCB_264.3 GluCer(d18:1/17:0)_LCB_264.3 NaN NaN NaN 3.993535e+06 8.912731e+05 2.791991 0.059864 True 125.927659773487 NaN
尝试生成数据透视表时:
pivoted_report_conc = raw_report.pivot(index = "Sample_Name", columns = 'Component_Name', values = "Calculated_Concentration")
我收到以下错误:
ValueError: Index contains duplicate entries, cannot reshape
我尝试重置索引,但没有帮助。我在“索引”列中找不到任何重复值。有人可以帮忙找出这里的问题吗?
预期的输出将是一个重新调整的数据框,其中只有唯一的组分名称作为列,每个样品名称的各自浓度:
Sample_Name GluCer(d18:1/12:0)_LCB_264.3 GluCer(d18:1/17:0)_LCB_264.3 GluCer(d18:1/16:0)_LCB_264.3
20170824_ELN147926_HexLacCer_Plasma_A-1-1 NaN NaN 125.927659773487
为了澄清,我不是要汇总数据,只是重塑它。
【问题讨论】:
-
您在数据透视代码中用作索引的样本名称对于所有三行都是相同的。您需要具有适当 aggfunc 的 pivot_table 来聚合数据
-
用预期的输出更新您的帖子会很有帮助。
-
谢谢@andrew_reece。我已经更新了帖子以反映所需的输出。
-
您使用的是什么版本的 Pandas 和 Python?使用 Pandas 0.20.3 和 Python 3.6 以及您给定的示例数据,即使我使用
df.index = [1,1,2]在初始索引中明确复制,您的pivot()语句也会产生您预期的输出。 -
@andrew_reece 我正在使用 Pandas 0.19.2 和 Python 2.7.13 我可以尝试更新软件包以查看是否有帮助。