【问题标题】:Add string in a range creation [duplicate]在范围创建中添加字符串[重复]
【发布时间】:2018-01-01 18:50:04
【问题描述】:

我想创建一行,以便将其用作数据框的标题。

格式是这样的

[a0, a1, a2]

或者没有逗号,我不确定需要将什么作为听者粘贴到数据框中。

我尝试的是这样的:

"a" + str(range(0,3))

但结果是这样的:

a[0, 1, 2]

【问题讨论】:

  • "[" + ", ".join("a" + str(i) for i in range(0, 3)) + "]"
  • 所有答案都有效,谢谢。我对他们都投了赞成票,不知道该接受哪一个。

标签: python


【解决方案1】:

format使用列表推导:

c = ['a{}'.format(x) for x in range(3)]
print (c)
['a0', 'a1', 'a2']

如果想更改 pandas 数据框中的列名:

df.columns = 'a' + df.columns.astype(str)

或者使用add_prefix:

df = df.add_prefix('a')

示例:

df = pd.DataFrame([[2,3,4]])
df = df.add_prefix('a')
print (df)
   a0  a1  a2
0   2   3   4

【讨论】:

  • 是否有一个术语可以在一行中进行本质上的循环?如果我想了解更多相关信息,我会查找什么? (你和其他人是如何做到z(x) for x in y 而不是说for x =1 to 3 // z(x)
  • @BruceWayne - 它被称为list comprehension
【解决方案2】:
range(0, 3)

返回一个这样的列表:

[0, 1, 2]

如果您希望它变成 [a0, a1, a2],您可以使用列表推导式。

例如

myList = ["a" + str(val) for val in range(0, 3)]

如果你没有使用过列表推导式,那么这只是一种简洁的写法

myList = []
for val in range(0, 3):
    myList.append("a" + str(val))

在此之后,myList 将是

['a0', 'a1', 'a2']

【讨论】:

    【解决方案3】:

    你可以使用map:

    new_data = map(lambda x:"a{}".format(x), range(3))
    

    输出:

    ['a0', 'a1', 'a2']
    

    或者,稍微短一点:

    new_string = ("a{} "*3).format(*range(3)).split()
    

    输出:

    ['a0', 'a1', 'a2']
    

    【讨论】:

      【解决方案4】:

      在创建范围后,尝试在列表迭代中将字符串 'a' 添加到列表中。例如:

      column_names = range(3)
      column_names = ['a'+str(i) for i in x]
      

      然后,您可以在定义数据框时将此列表用作 columns 参数。

      【讨论】:

        【解决方案5】:

        如果您正在寻找最短的代码,请尝试使用 f-strings(在 Python 3.6+ 中)进行列表推导:

        [f'a{i}' for i in range(3)]
        

        【讨论】:

          【解决方案6】:

          使用

          header = ["a" + str(x) for x in range(0,3)]
          

          输出

          ["a0","a1","a2"]
          

          【讨论】:

            【解决方案7】:

            您可以使用列表推导:

            ["a" + str(i) for i in range(0,3)]
            

            【讨论】:

              【解决方案8】:

              也许一个不太简洁但更易于阅读的方法是:

              b = []
              for i in range(0, 3):  
                  c = "a" + str(i)
                  b.append(c)
              

              这里我们取一个空列表并添加一个带有所需字母的字符串和range() 的值将它们加在一起,然后使用append() 方法将它们添加到列表中。

              【讨论】:

                猜你喜欢
                • 2015-09-03
                • 2023-04-03
                • 2021-11-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-05-12
                • 1970-01-01
                相关资源
                最近更新 更多