小编Ark*_*tev的帖子

“没有 [Int64Index , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n ...... dtype='int64 ')] 在 [列] 中”

我目前正在尝试对 pandas 数据框执行 KFold,从 csv 读取 pandas 文件。不幸的是我收到错误:

“没有 [Int64Index , 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n ...... dtype='int64 ')] 在 [列] 中”

这是我的代码:

def getSlicesOfData(read_csv):
    slice_training_data = read_csv[["player", "0", "1", "2", "3", "4", "5", "6", "7", "8"]]
    slice_prediction_data = read_csv[["best_move"]]
    return (slice_training_data, slice_prediction_data)

def getKFold(data_sliced):
    kf = KFold(n_splits=10, random_state=None, shuffle=False)
    return kf.split(data_sliced[0],data_sliced[1])
    #return TimeSeriesSplit(n_splits=10, max_train_size=9)

if __name__ == "__main__":
    read_csv = pd.read_csv('100games.csv')
    data_slice = getSlicesOfData(read_csv)
    for train_index, test_index in …
Run Code Online (Sandbox Code Playgroud)

dataframe pandas scikit-learn

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

3和5的倍数之和

我必须在给定的N个数(不包括N个)的范围内计算3和5(包括它们自己)的所有倍数的总和。我创建了一个python代码,它适用于N = 10,但不适用于N =100。我不明白为什么。

这是代码:

#!/bin/python3
import sys
def multiples_sum(n):
    sum1 = 0
    for i in range(n):
        if i % 3 == 0:
            sum1 = sum1 + i
        if i % 5 == 0:
            sum1 = sum1 + i
    return sum1
t = int(input().strip())
for a0 in range(t):
    n = int(input().strip())
    print(multiples_sum(n))
Run Code Online (Sandbox Code Playgroud)

python

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

顺序未知时在范围上进行迭代的Pythonic方法

说我有2个变量xy,我想遍历其间的所有值,而不知道是否xy更大:

if(x>y):
  for i in range(y,x):
    #Code

elif(x<y):
  for i in range(x,y):
    #Code
Run Code Online (Sandbox Code Playgroud)

没有所有if-else条件的Pythonic方法是什么?顺序无关紧要,降序或升序都可以,但是一般的答案会很好!

python loops python-3.x

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

如何从字符串中获取python函数对象

我有字符串格式的 python 函数,我想在程序范围内获取这些函数的 python 对象。我已经尝试过exec()eval()ast.literal_eval()这些都没有返回函数对象。

例如:

s = "def add(args):\n    try:\n        return sum([int(x) for x in args])\n    except Exception as e:\n        return 'error'\n
Run Code Online (Sandbox Code Playgroud)

这是字符串中的一个简单函数,用于添加列表元素。我正在寻找一个可以返回函数对象的实用模块add

function_obj = some_function(s)
print 'type:', type(function_obj)
type: <type 'function'>
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

将 f 字符串与要在正则表达式中使用的原始字符串组合会产生 SyntaxError;ValueError 或错误结果

我这里有一个字符串:

s0 = 'Ready1   Origin1                 Destination1             Type1       Rate1      Phone1 #     Pro1 #'
Run Code Online (Sandbox Code Playgroud)

以下变量的计算如下:

is_head = len([i.group() for i in re.finditer(r"(\s+){2,}", s0)]) >= 3
Run Code Online (Sandbox Code Playgroud)

这给了我True对我来说正确且预期的结果。现在我有另一个变量cont_,它可能包含 到 之间的任何26。我想根据 的值将正则表达式从 更改r"(\s+){2,}"为。我想获取变量而不为每种情况声明单独的正则表达式。为此,我需要使用 f 字符串以及当前用于正则表达式检查的原始字符串。我已经尝试过这些:r"(\s+){6,}"cont_is_head

>>> len([i.group() for i in re.finditer(fr"(\s+){{cont_},}", s0)]) >= 3
  File "<stdin>", line 1
SyntaxError: f-string: single '}' is not allowed
>>> len([i.group() for i in re.finditer(rf"(\s+){{cont_},}", s0)]) >= 3
  File "<stdin>", line 1
SyntaxError: f-string: single '}' …
Run Code Online (Sandbox Code Playgroud)

python regex python-3.x f-string python-3.7

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

Python:将一个characater的多次出现替换为一次,但单次出现则为none

我有一个字符串:

a = '0202201131181'
Run Code Online (Sandbox Code Playgroud)

我想用单个替换所有多次出现的1in a,1如果只找到一次出现'1',则用空字符串''替换它.

我的最终目标是获得:

a = '0202201318'
Run Code Online (Sandbox Code Playgroud)

在这里,'8'字符后面的'1'只出现一次,所以它被空字符串替换,但字符'3'之前的'11'和字符'3'之后的'11'被'1'取代.

这是我尝试过的if-else代码块,部分正确:

if '11' in a:
    a = a.replace("11","1")
else:
    a = a.replace("1","")
Run Code Online (Sandbox Code Playgroud)

但它输出'02022013181',这是不正确的.这该怎么做?

python string string-formatting python-3.x

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

将元组列表转换为字典2的不同方式

我有以下元组列表.

[('0', 'Hadoop'), ('0', 'Big Data'), ('0', 'HBas'), ('0', 'Java'), ('0', 'Spark'), ('0', 'Storm'), ('0', 'Cassandra'), ('1', 'NoSQL'), ('1', 'MongoDB'), ('1', 'Cassandra'), ('1', 'HBase'), ('1', 'Postgres'), ('2', 'Python'), ('2', 'skikit-learn'), ('2', 'scipy'), ('2', 'numpy'), ('2', 'statsmodels'), ('2', 'pandas'), ('3', 'R'), ('3', 'Python'), ('3', 'statistics'), ('3', 'regression'), ('3', 'probability'), ('4', 'machine learning'), ('4', 'regression'), ('4', 'decision trees'), ('4', 'libsvm'), ('5', 'Python'), ('5', 'R'), ('5', 'Java'), ('5', 'C++'), ('5', 'Haskell'), ('5', 'programming languages'), ('6', 'statistics'), ('6', 'probability'), ('6', 'mathematics'), ('6', 'theory'), ('7', …
Run Code Online (Sandbox Code Playgroud)

python list

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

由于“无法将序列乘以‘numpy.float64’类型的非 int”错误而无法拟合数据

我正在尝试使用 matplotlib 和 scipy 使用线性函数在 .txt 文件中拟合并绘制简单数据(a*x+b)。我遇到了有关测试功能的错误:"can't multiply sequence by non-int of type 'numpy.float64'"

我尝试过更改变量名称x,但遇到了同样的问题。大多数代码来自一个工作代码,该代码能够毫无问题地拟合数据,并对测试函数使用相同的定义。

import matplotlib.pyplot as plt
from scipy import optimize
import numpy as np
f=open("testData.txt","r")
x_data=[]
y_data=[]
trash=f.readline() #discards first line
for line in f: #reads x and y data from file
    x_read,y_read=line.split()
    x_data.append(float(x_read))
    y_data.append(float(y_read))

def test_func(x, a, b):
    return a*x+b

params, params_covariance = optimize.curve_fit(test_func, x_data, y_data, 
p0=[1, 1])
plt.figure(figsize=(6, 4))
plt.scatter(x_data, y_data)
plt.plot(x_data, test_func(x_data, params[0], params[1]), label='Fitted 
function')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这是错误:

回溯(最近一次调用最后一次): …

python matplotlib scipy data-fitting function-fitting

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

控制台警告文件

我正在运行一个 python 脚本,用于pandas.read_csv导入 csv 文件。当 Pandas 没有看到预期的内容时,它会提供控制台警告,例如:

Skipping line 163: Expected 41 fields in line 163, saw 42
Run Code Online (Sandbox Code Playgroud)

我如何将其记录到文本文件中?

如果我从命令行运行脚本,python > logfile.txt则文件中仅显示 print 的输出,而不显示警告。

python

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

Python从文本文件中的列表中删除目录中的文件

我已经搜索了许多关于基于某些参数(例如所有 txt 文件)删除多个文件的答案。不幸的是,我还没有看到任何将较长的文件列表保存到 .txt(或 .csv)文件并希望使用该列表从工作目录中删除文件的内容。

我将当前的工作目录设置为 .txt 文件所在的位置(带有要删除的文件列表的文本文件,每行一个)以及 ~4000 .xlsx 文件。在 xlsx 文件中,我想删除大约 3000 个(在 .txt 文件中列出)。

这是我到目前为止所做的:

import os
path = "c:\\Users\\SFMe\\Desktop\\DeleteFolder"
os.chdir(path)
list = open('DeleteFiles.txt')
for f in list:
   os.remove(f)
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'Test1.xlsx\n'
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一些简单的东西。任何帮助将不胜感激!

谢谢

python python-3.x

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