小编Ger*_*ard的帖子

如何过滤NaN(熊猫)?

我有一个pandas数据帧(df),我想做的事情如下:

newdf = df[(df.var1 == 'a') & (df.var2 == NaN)]
Run Code Online (Sandbox Code Playgroud)

我已经尝试用np.NaN,'NaN'或者'nan'等等替换NaN ,但没有任何评估为True.没有pd.NaN.

我可以df.fillna(np.nan)在评估上面的表达式之前使用但是感觉很乱,我想知道它是否会干扰其他依赖能够识别熊猫格式NaN的熊猫操作.

我觉得应该对这个问题有一个简单的答案,但不知怎的,它已经躲过了我.任何建议表示赞赏.谢谢.

python nan pandas

47
推荐指数
4
解决办法
7万
查看次数

在matplotlib中绘制pandas日期

我有一个包含日期的固定宽度数据文件,但是当我尝试绘制数据时,日期没有在x轴上正确显示.

我的文件看起来像

2014-07-10 11:49:14.377102    45
2014-07-10 11:50:14.449150    45
2014-07-10 11:51:14.521168    21
2014-07-10 11:52:14.574241     8
2014-07-10 11:53:14.646137    11
2014-07-10 11:54:14.717688    14
Run Code Online (Sandbox Code Playgroud)

等等

我用pandas读取文件

#! /usr/bin/env python
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_fwf('myfile.log',header=None,names=['time','amount'],widths=[27,5])
data.time = pd.to_datetime(data['time'], format='%Y-%m-%d %H:%M:%S.%f')
plt.plot(data.time,data.amount)
plt.show()
Run Code Online (Sandbox Code Playgroud)

所以我想这里的问题是从pandas到matplotlib datetime的转换,如何进行转换?

我也直接尝试过熊猫:

data.time = pd.to_datetime(data['time'], format='%Y-%m-%d %H:%M:%S.%f')
data.set_index('time') # Fails!!
data.time.plot()
Run Code Online (Sandbox Code Playgroud)

但这失败了

TypeError:Empty'Series':没有要绘制的数字数据

python datetime matplotlib dataframe pandas

17
推荐指数
2
解决办法
4万
查看次数

使用f2py将numpy字符串格式数组传递给fortran

我的目标是从fortran中的python numpy数组中打印第二个字符串,但我只打印出第一个字符,并且它也不一定是正确的字符串.

任何人都可以告诉我将完整的字符串数组传递给fortran的正确方法是什么?

代码如下:

testpy.py

import numpy as np
import testa4

strvar = np.asarray(['aa','bb','cc'], dtype = np.dtype('a2'))
testa4.testa4(strvar)
Run Code Online (Sandbox Code Playgroud)

testa4.f90

subroutine testa4(strvar)
implicit none

character(len=2), intent(in) :: strvar(3)
!character*2 does not work here - why?

print *, strvar(2)

end subroutine testa4
Run Code Online (Sandbox Code Playgroud)

编译

f2py -c -m testa4 testa4.f90
Run Code Online (Sandbox Code Playgroud)

输出上述代码

c
Run Code Online (Sandbox Code Playgroud)

期望的输出

bb
Run Code Online (Sandbox Code Playgroud)

python arrays fortran numpy f2py

5
推荐指数
1
解决办法
1280
查看次数

无法使用声音设备录制声音

我无法sounddevice在 python 中使用录制音频。此代码之前可以在旧版本的 Mac OS 上运行。

python3代码如下:

import sounddevice as sd
import numpy as np
fs = 48000
duration=5
rec = sd.rec(int(duration * fs), samplerate=fs, channels=1, blocking=True)
print(rec)
Run Code Online (Sandbox Code Playgroud)

输出是

array([[0.],
       [0.],
       [0.],
       ...,
       [0.],
       [0.],
       [0.]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)

虽然此处并未显示所有值,但我已确认它们全部为零。当声音记录正确时,这些值大部分都是非零的。

我已确认设备设置正确:

sd.default.device # Output is [2, 3]

python3 -m sounddevice
  0 DisplayPort, Core Audio (0 in, 2 out)
  1 DisplayPort, Core Audio (0 in, 2 out)
> 2 MacBook Pro Microphone, Core Audio (1 in, 0 out)
< 3 MacBook …
Run Code Online (Sandbox Code Playgroud)

python audio-recording python-sounddevice

4
推荐指数
1
解决办法
3089
查看次数