小编Fab*_*tti的帖子

在pandas中向现有数据框添加新行时出错

嗨,我有以下数据帧.

df3=pd.DataFrame(columns=["Devices","months"])
Run Code Online (Sandbox Code Playgroud)

我从循环行获取行值,打印(数据)

    Devices     months
1  Powerbank  Feb month
Run Code Online (Sandbox Code Playgroud)

当我将此数据行添加到我的df3时,我收到错误.

  df3.loc[len(df3)]=data
Run Code Online (Sandbox Code Playgroud)

python data-analysis dataframe pandas

8
推荐指数
2
解决办法
1万
查看次数

带通滤波器 ValueError:数字滤波器临界频率必须为 0 < Wn < 1

我正在尝试对心电图信号使用带通滤波器,这是代码:

from scipy.signal import butter

def bandpass_filter(self, data, lowcut, highcut, signal_freq, filter_order):
        nyquist_freq = 0.5 * signal_freq
        low = lowcut / nyquist_freq
        high = highcut / nyquist_freq
        b, a = butter(filter_order, [low, high], btype='band', analog=False)
        y = lfilter(b,a, data)
        return y

def detect_peaks(self):
    self.filtered_ecg_measurements = self.bandpass_filter(ecg_measurements,
                                         lowcut=self.filter_lowcut,
                                         highcut=self.filter_highcut,
                                         signal_freq=self.signal_frequency,
                                         filter_order=self.filter_order)
    self.signal_frequency = 250  
    self.filter_lowcut = 0.0
    self.filter_highcut = 15.0
    self.filter_order = 1
Run Code Online (Sandbox Code Playgroud)

每次我尝试运行此函数时都会出现此错误:

Traceback (most recent call last):
  File "D:/Project/code/untitled/test.py", line 297, in <module>
    log_data=True, plot_data=True, show_plot=False)
  File "D:/Project/code/untitled/test.py", line …
Run Code Online (Sandbox Code Playgroud)

python signals python-3.x bandpass-filter

6
推荐指数
1
解决办法
2万
查看次数

如何迭代 DataFrame 并生成新的 DataFrame

我有一个数据框,如下所示:

P Q L
1 2 3
2 3 
4 5 6,7
Run Code Online (Sandbox Code Playgroud)

目的是检查 中是否有任何值,如果有,则提取和列L上的值:LP

P L
1 3
4,6
4,7
Run Code Online (Sandbox Code Playgroud)

请注意, 中可能有多个值L,在超过 1 个值的情况下,我需要两行。

以下是我当前的脚本,它无法生成预期的结果。

df2 = []
ego
other
newrow = []

for item in data_DF.iterrows():
    if item[1]["L"] is not None:
        ego = item[1]['P']
        other = item[1]['L']
        newrow = ego + other + "\n"
        df2.append(newrow)

data_DF2 = pd.DataFrame(df2)
Run Code Online (Sandbox Code Playgroud)

python pandas

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

为什么openpyxl无法识别我打开的现有excel文件中工作表的名称?

我正在使用以下代码在python 3.6,Excel 2016中打开现有的Excel文件:

Shnm = my_pyx.get_sheet_names() 
sheet = my_pyx.get_sheet_by_name(Shnm[0])

from openpyxl import load_workbook
# Class to manage excel data with openpyxl.

class Copy_excel:
    def __init__(self,src):
        self.wb = load_workbook(src)
        self.ws = self.wb.get_sheet_by_name(sheet)
        self.dest="destination.xlsx"

    # Write the value in the cell defined by row_dest+column_dest         
    def write_workbook(self,row_dest,column_dest,value):
        c = self.ws.cell(row = row_dest, column = column_dest)
        c.value = value

    # Save excel file
    def save_excel(self) :  
        self.wb.save(self.dest)
Run Code Online (Sandbox Code Playgroud)

资源

因此,当我这样做时:

row_dest=2
column_dest=6   
workbook = Copy_excel(my_file)
data=60
workbook.write_workbook(2,6,data )
workbook.save_excel()
Run Code Online (Sandbox Code Playgroud)

其中:my_file是类似于filename.xlsxstr的表,而sheet是具有工作表名称的str。

出现错误,指出所提到的工作表名称不存在,这使我很烦。

我也尝试替换:

self.ws …

python excel openpyxl

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

为什么我不能使用正则表达式从某些字符串中找出一些ID?

我正在尝试ID从某些字符串中找出一些。我想从每个字符串中抓取的部分在bd-和之间?。后者并不总是存在的,所以我想做出这个信号吗?可选的。我知道我可以使用字符串操作来实现相同的目的,但是我希望使用正则表达式来实现相同的目的。

我尝试过:

import re

content = """
id-HTRY098WE
id-KNGT371WE?witkl
id-ZXV555NQE?phnu
eh-VCBG075LK
"""
for item in re.findall(r'id-(.*)\??',content):
    print(item)
Run Code Online (Sandbox Code Playgroud)

输出它产生:

HTRY098WE
KNGT371WE?witkl
ZXV555NQE?phnu
Run Code Online (Sandbox Code Playgroud)

预期产量:

HTRY098WE
KNGT371WE
ZXV555NQE
Run Code Online (Sandbox Code Playgroud)

如何ID从某些字符串中刮掉?

python regex python-3.x

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

使用还包含科学数字格式的 python 将逗号转换为 txt 中的点

我有一个文本文件(巨大的),所有数字之间用空格和制表符的组合分隔,小数点和小数点后用逗号分隔,而第一列是科学格式,下一列是数字,但用逗号。我只是把第一行作为数字放在这里:

0,0000000E00 -2,7599284 -1,3676726 -1,7231264 -1,0558825 -1,8871096 -3,0763804 -3,2206187 -3,2306187 -3,2308111 -2614,26,404,3,5 2180738

该文件太大了,记事本++无法处理它以将“,”转换为“。”

所以我要做的是:

with open(file) as fp:
    line = fp.readline()
    cnt = 1
    while line:
        digits=re.findall(r'([\d.:]+)', line)
        s=line
        s = s.replace('.','').replace(',','.')
        number = float(s)
        cnt += 1 
Run Code Online (Sandbox Code Playgroud)

我什至尝试使用数字,但这会导致将第一列分成两个数字:

输出数字

最终我在使用 .replace 命令时得到的错误。我更喜欢将逗号转换为点,而不管像科学这样的令人不安的格式。我感谢您的帮助

ValueError异常:无法将字符串转换为浮动:'00000000E00
\ T-29513521 \ T-17002219 \ T-22375536 \ T-14994097
\ T-24163610 \ T-34076621 \ T-31233623 \ T-32341597
\ T-24724552 \ T- 42434935 \t-43454237 \t-44885144
\n'

我还将输入在 txt 中的样子以及我在输出中需要它的方式(以 csv 格式)

输入看起来像这样:

第一行 …

python text

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

Python np.lognormal 为 big average 和 St Dev 提供无限结果

我正在尝试为我的数据绘制对数正态分布。使用以下代码:

mu, sigma = 136519., 50405. # mean and standard deviation
hs = np.random.lognormal(mu, sigma, 1000) #mean, s dev , Size
count, bins, ignored = plt.hist(hs, 100, normed=True)     
x = np.linspace(min(bins), max(bins), 10000)
pdf = (math.exp(-(np.log(x) - mu)**2 / (2 * sigma**2)))
#plt.axis('tight')
plt.plot(x, pdf, linewidth=2, color='r')
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我的均值和西格玛是很大的值,它会产生一个问题,即 hs 趋于无穷大,从而产生错误。如果我输入 mu =3 和 sigma =1 之类的东西,它会起作用,对大数字有什么建议吗?

更新 1:

我用第一个答案更正了我的代码,但现在我只能得到一条直线:

 mu, sigma = 136519 , 50405 # mean and standard deviation

    normal_std = np.sqrt(np.log(1 + (sigma/mu)**2))
    normal_mean = np.log(mu) - normal_std**2 …
Run Code Online (Sandbox Code Playgroud)

python statistics numpy mean standard-deviation

3
推荐指数
1
解决办法
712
查看次数