【发布时间】:2021-09-12 01:52:09
【问题描述】:
我有一个光谱仪的波长和吸光度输入文件。在此文件中,数据被记录并添加为数据框的最后两列。需要这些列来指定测量特定吸光度(=数据)的波长。
| Wavelength1 | Data1 | Wavelength2 | Data2 | Wavelength3 | Data3 | and so on |
|---|---|---|---|---|---|---|
| 800 | 0.1 | 798 | 0.02 | 798.5 | 0.6 | and so on |
| 799 | 0.15 | 797 | 0.03 | 798.0 | 0.2 | and so on |
| 798 | 0.133 | 796 | 0.2 | 797.5 | 0.4 | and so on |
| 797 | 0.14 | 795 | 0.052 | 797.0 | 0.34 | and so on |
| and so on | and so on | and so on | and so on | and so on | and so on | and so on |
我想要一个数据框,让我的分析更容易一些。类似的东西:
| Wavelength1 | Data1 | Wavelength2 | Data2 | Wavelength3 | Data3 | and so on |
|---|---|---|---|---|---|---|
| 800 | 0.1 | NaN | NaN | 798.5 | 0.6 | and so on |
| 799 | 0.15 | NaN | NaN | 798.0 | 0.2 | and so on |
| NaN | NaN | NaN | NaN | 798.5 | 0.6 | and so on |
| 798 | 0.133 | 798 | 0.02 | 798.0 | 0.2 | and so on |
| NaN | NaN | NaN | NaN | 797.5 | 0.4 | and so on |
| 797 | 0.14 | 797 | 0.03 | 797.0 | 0.34 | and so on |
| and so on | and so on | and so on | and so on | and so on | and so on | and so on |
我知道,凭借我非常基本的 Python 技能集,我可能可以将每个波长数据对存储为一个元组列表,并让一些复杂的排序魔法发生。但是自从尝试更多地了解 pandas 模块后,我想知道我是否可以更轻松地解决这个问题。然而,虽然我找到了pandas shift function,但我还没有找到一种方法来使它有条件,也没有单独移动和排序每一列。
【问题讨论】:
-
我能问一下为什么你有多个 Wavelength 列吗? DataFrame 是否需要多于两列(波长、数据)?
-
“Wavelength2”中有两个 796 条目。你会保留哪个?
-
@philosofool:您可能希望更改波长之间的点数以便更好地估计某个峰值,但通常一个波长列和多个数据列应该是好的。
-
@not_speshal:这是一个错误。我修好了。
标签: python pandas dataframe slice data-manipulation