# getting multiple values for same frequency when calculating power spectral density

**URL:** <https://mne.discourse.group/t/getting-multiple-values-for-same-frequency-when-calculating-power-spectral-density/4666>\
**Category:** Support & Discussions\
**Tags:** preprocessing, eeg\
**Created:** [April 6, 2022, 5:29pm UTC](https://mne.discourse.group/t/getting-multiple-values-for-same-frequency-when-calculating-power-spectral-density/4666 "2022-04-06T17:29:03Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![bipvan](https://avatars.discourse-cdn.com/v4/letter/b/e19b73/32.png) [@bipvan](https://mne.discourse.group/u/bipvan)\
**Post date:** [April 6, 2022, 5:29pm UTC](https://mne.discourse.group/t/getting-multiple-values-for-same-frequency-when-calculating-power-spectral-density/4666/1 "2022-04-06T17:29:03Z")

</div>

Hi,  
I have 5 subjects and 4 tasks. The data is in bids format. I am using following code to read data:

```python

task = ['AUDI','LEC2', 'MOTO', 'MVIS']
subject = ['071','073','076','077', '079']
suffix= 'ieeg'

raw = {}
for tsk in task:
    for sub in subject:
        bids_path = BIDSPath(subject=sub, task=tsk, acquisition = 'f8f24ds8sm0', suffix=suffix, root='iEEG_data_sample')
        raw[(tsk,sub)] = read_raw_bids(bids_path=bids_path, verbose=False)

```

I am using the following code to find PSD for each raw data object:

```python
psds_df = {}

for key, val in raw.items():
    psds, freqs = mne.time_frequency.psd_multitaper(val, low_bias=True)
    psds_df[key] = pd.DataFrame(psds.T, index=pd.Index(np.round(freqs, 2), name="frequencies"), columns=val.ch_names)

```

If I see the dataframe for (“AUDI”, “071”), I get the following dataframe:

 ![PSD](https://global.discourse-cdn.com/free1/uploads/mne/original/2X/4/470a25cc69268b744015f13eba147b5f1f79eea5.png)  
Thanks for the help.

- MNE version: e.g. 0.24.0
- operating system: Windows 11

---

<div class="post-metadata">

**Author:** ![cbrnr](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/cbrnr/32/1409_2.png) [@cbrnr](https://mne.discourse.group/u/cbrnr)\
**Post date:** [April 6, 2022, 5:43pm UTC](https://mne.discourse.group/t/getting-multiple-values-for-same-frequency-when-calculating-power-spectral-density/4666/2 "2022-04-06T17:43:45Z")

</div>

What is your question? If you don’t know what the columns represent, I assume these are the channels?

---

<div class="post-metadata">

**Author:** ![bipvan](https://avatars.discourse-cdn.com/v4/letter/b/e19b73/32.png) [@bipvan](https://mne.discourse.group/u/bipvan)\
**Post date:** [April 6, 2022, 5:56pm UTC](https://mne.discourse.group/t/getting-multiple-values-for-same-frequency-when-calculating-power-spectral-density/4666/3 "2022-04-06T17:56:50Z")

</div>

Thanks.

Yes the columns represent channels.

My question is why I am getting so many values for 1 frequency. If I read eeg file one by one (one subject and one task), I get the PSD dataframe where each row represent data for one frequency (as expected).

---

<div class="post-metadata">

**Author:** ![cbrnr](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/cbrnr/32/1409_2.png) [@cbrnr](https://mne.discourse.group/u/cbrnr)\
**Post date:** [April 6, 2022, 7:01pm UTC](https://mne.discourse.group/t/getting-multiple-values-for-same-frequency-when-calculating-power-spectral-density/4666/4 "2022-04-06T19:01:03Z")

</div>

Hm, I don’t know either. What are the values of `freqs`? What is the sampling frequency of your signals?

---

<div class="post-metadata">

**Author:** ![alexrockhill](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/alexrockhill/32/31_2.png) [@alexrockhill](https://mne.discourse.group/u/alexrockhill)\
**Post date:** [April 7, 2022, 8:13pm UTC](https://mne.discourse.group/t/getting-multiple-values-for-same-frequency-when-calculating-power-spectral-density/4666/5 "2022-04-07T20:13:06Z")

</div>

One guess is that it’s because calling `pd.Index` casts the frequency to an integer. I don’t think `pandas` support floats as indices.

EDIT: The pandas version I have (`1.4.1`) does support float indexing but perhaps yours is out of data and this might be solved by upgrading pandas.
