小编Ch3*_*teR的帖子

如何通过Python中的argparse模块打印多行版本文本?

好吧,我正在使用argparse模块,但发现多行文本作为版本信息无法很好地显示。结果显示'\n'会变成空格''。例子:

import argparse
ver_text = 'This is the\nversion text!'
parser = argparse.ArgumentParser()
parser.add_argument('-v', '--version', action='version', version=ver_text)
Run Code Online (Sandbox Code Playgroud)
$ python test.py -v
Run Code Online (Sandbox Code Playgroud)

结果:

This is the version text!
Run Code Online (Sandbox Code Playgroud)

所以这就是问题所在。我想知道如何处理。非常感谢!

python command-line-arguments

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

如何确定列表中的几个最小值?

我有几个最低限度的清单:

some_list = [1,4,6,4,1,7]
Run Code Online (Sandbox Code Playgroud)

是否有内置函数或任何智能解决方案来获取最小值的索引?

result = [0,4]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我是这样做的,但我更喜欢更短/更容易阅读的解决方案。

 min = 10**10
 result = [] 
 for i in range(len(some_list)):
        if some_list[i] < min:
            min = some_list[i]
            result = [i]
        elif some_list[i] == min:
            result.append(i)
Run Code Online (Sandbox Code Playgroud)

python list enumerate min python-3.x

3
推荐指数
2
解决办法
137
查看次数

使用 enumerate() 枚举带有字母而不是数字的项目

我正在尝试使用内置函数 enumerate() 来标记一些点或顶点,其中每个点由其在元组列表(或组)中的坐标表示,基本上看起来像 {(4,5), (6,8), (1,2)}

我想将一个从“a”开始的字母按升序分配给这个集合中的每个元组,使用方法enumerate()完全相同,但它的编写方式是返回每个项目的索引值,因此它是一个从0.

除了自己写,还有什么办法enumerate()吗?

python indexing list enumerate python-3.x

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

如何对列包含特定字符串的行中的所有值求和?

所以我有每个社区的场地类别的数据框。看起来像:

在此输入图像描述

每行中的值代表编号。特定社区中每个场馆的信息。

我想找出每个街区的餐馆总数。为此,我知道我必须对列包含字符串“Restaurant”的行中的值进行求和。

我尝试过使用str.contains函数,但这总结了真实情况 - 包含字符串的列在该行中restaurant具有值的次数>0。但相反,我想要的是,总而言之,总数没有。而是附近的餐馆。

python dataframe pandas

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

在大熊猫数据框中替换大于 1 的值

我试图用 1 替换所有大于 1 的数字,同时以最小的努力在整个数据框中保持原始 1 和 0 不变。任何支持表示赞赏!

我的数据框看起来像这样,但包含更多的列和行。

Report No   Apple   Orange   Lemon   Grape   Pear
One           5       0        2       1      1
Two           1       1        0       3      2
Three         0       0        2       1      3
Four          1       1        3       0      0
Five          4       0        0       1      1
Six           1       3        1       2      0
Run Code Online (Sandbox Code Playgroud)

期望输出:

Report No   Apple   Orange   Lemon   Grape   Pear
One           1       0        1       1      1
Two           1       1        0       1      1
Three         0       0        1       1      1
Four …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

迭代包含嵌套数组的 Pandas 数据框列

我希望你能帮助我解决这个问题

我在下面有这些数据(列名称随便)

data=([['file0090',
    ([[ 84,  55, 189],
   [248, 100,  18],
   [ 68, 115,  88]])],
   ['file6565',
    ([[ 86,  58, 189],
   [24, 10,  118],
   [ 68, 11,  8]])
   ]])
Run Code Online (Sandbox Code Playgroud)

我需要将第 0 列和第 1 列迭代到排序列表中,我可以使用此输出转换为数据框:

col0          col1  col2   col3 
file0090      84     55     189
file0090      248    100      1
file0090      68     115    88
file6565      86     58    189
file6565      24    10     118
file6565      68    11      8
Run Code Online (Sandbox Code Playgroud)

我已经用 iterrows、iteritems、items 和附加到列表中测试了所有数据帧迭代,但结果总是围绕相同的输出,我不知道这些项目是如何从这些数组中分离出来的

如果您能提供帮助,请提前致谢。

python dataframe pandas

3
推荐指数
2
解决办法
395
查看次数

熊猫在列中找到最接近的值

我有下表:

   year   pop1     pop2
0   0    100000    100000
1   1    999000    850000
2   2    860000    700000
3   3    770000    650000
Run Code Online (Sandbox Code Playgroud)

我想为每个 pop (pop1 ,pop2) 找到 pop 最接近给定数字的年份,例如,pop 最接近 830000 的年份。

有没有办法根据给定的值在列内找到最接近的值?

我看过这篇文章(如何在 Pandas 系列中找到与输入数字最接近的值? _ 但似乎这里的结果是上下,我最终只能得到一个数字。

*我没有代码示例,因为我没有找到任何用于获取最近的参数

python pandas

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

检查列表中每个字典中的参数值是否是连续的

我想检查当前是否id等于最后id一个+1,(这应该适用于列表中添加的任意数量的类似字典)

代码

listing = [
    {
        'id': 1,
        'stuff': "othervalues"
    },
    {
        'id': 2,
        'stuff': "othervalues"
    },
    {
        'id': 3,
        'stuff': "othervalues"
    }
]

for item in listing :
    if item[-1]['id'] == item['id']+1:
        print(True)
Run Code Online (Sandbox Code Playgroud)

输出

Traceback (most recent call last):
  File "C:\Users\samuk\Desktop\Master\DV\t2\tester.py", line 10, in <module>
    if item[-1]['id'] == item['id']+1:
KeyError: -1
Run Code Online (Sandbox Code Playgroud)

期望的结果

True
Run Code Online (Sandbox Code Playgroud)

或者,万一失败,

False
Run Code Online (Sandbox Code Playgroud)

python dictionary list

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

有没有办法在 C++ 中将输入字符串转换为输入流?

我想要做的是从终端获取用户输入,并在程序中的其他函数中使用该输入。由于我的函数仅将输入流作为参数,因此我想将输入字符串转换为输入流。

int main(int argc, char** argv)
{

    std::vector<std::string> args(argv, argv + argc);
    
    if(args.size() == 1){ //if no arguments are passed in the console
        std::string from_console;
        std::istringstream is;
        std::vector<std::string> input;
        while(!getline(std::cin,from_console).eof()){
            input.emplace_back(from_console);
        }
        for(std::string str : input){
            std::cout << "\n" << str;
        }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这段代码时出现的另一个问题是,当我用一堆字符而不是新行结束控制台输入时(按 Enter 键然后按 ctrl+d),该行被忽略并且没有打印出来。示例:当我输入以下内容时:

aaa bbb
ccc ctrl+d
Run Code Online (Sandbox Code Playgroud)

我只得到第一行(aaa bbb) 而没有打印出ccc。但:

aaa bbb
ccc
ctrl+d 
Run Code Online (Sandbox Code Playgroud)

也打印出 ccc,但它会忽略新行。那么为什么会发生这种情况呢?

c++ string input stream

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

如何查找 numpy 数组中每个元素出现的次数?

给定一个整数数组,我想获得一个相同大小的数组,其中每个值都是原始数组中相应元素出现的次数。

例如给定以下数组:

a = np.array([1, 1, 4, 10, 5, 3, 5, 5, 8, 9])
Run Code Online (Sandbox Code Playgroud)

这应该是结果:

array([2, 2, 1, 1, 3, 1, 3, 3, 1, 1])
Run Code Online (Sandbox Code Playgroud)

尽管通过collections.Counter或内置实现此目的很简单list.count(),但我正在寻找一种更高效的方法来处理大型列表。

python numpy

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