将多个名称相同但编号不同的列复制到python/pandas中的新df中

将多个名称相同但编号不同的列复制到python/pandas中的新df中,python,pandas,Python,Pandas,我有一个巨大的数据帧physioDf,希望将一些列复制到另一个名为smallPysioDf的df中。我知道,我可以像这样复制单个列: smallPhysioDf['column_name'] = physioDf['column_name'].values 但我现在想复制属于同一变量的30列。每个列名的开头相同(例如“VariableName”),但以1到30之间的特定数字结尾。将所有这些列复制到SmallDF中的最快方法是什么?我相信我将不得不使用for循环,但我不确定如何使用。非常感谢您的

我有一个巨大的数据帧physioDf,希望将一些列复制到另一个名为smallPysioDf的df中。我知道,我可以像这样复制单个列:

smallPhysioDf['column_name'] = physioDf['column_name'].values

但我现在想复制属于同一变量的30列。每个列名的开头相同(例如“VariableName”),但以1到30之间的特定数字结尾。将所有这些列复制到SmallDF中的最快方法是什么?我相信我将不得不使用for循环,但我不确定如何使用。非常感谢您的帮助。

您可以使用
过滤器
提取列名:

for c in physioDf.filter(regex='^VariableName_').columns:
      smallPhysioDf[c] = physioDf[c]
或者您可以使用f字符串:

for n in range(1,31):
    col_name = f'VariableName_{n}'
    smallPhysioDf[col_name] = physioDf[col_name]

一次选择所有列将是最快的:

columns = [f"VariableName_{i}" for i in range(1, 31, 1)]
smallPhysioDf = physioDf[columns].copy()

如果
smallepheredof
已经存在,您可以改为追加(如果
VariableName
列已经在数据帧中),或者合并(如果
VariableName
列是新的)。

非常感谢!这对于第10-30列很好,但对于前9列就不行了,因为它们有前导零(很抱歉,我在最初的帖子中没有提到这一点)。您能帮我解决一下如何将前导零包含到带有iYes的列中吗?只需使用字符串格式:
[f“VariableName_u{i:02}”for i in range(1,31,1)]
非常感谢!后一种方法可以工作,尽管我需要将其更改为physioDf[col_name].values,以复制行中的值。问题是VariableName_uu与您不需要将它与
链接。值被自动复制。当我没有添加。值时,我得到的是NaN,而不是单元格中的值。我编辑了上一条评论,因为我还需要在nOh中包含前导零,所以
smallPhysioDf
的索引与
physioDf
不同?在这种情况下,是的,您确实需要
.values
来传递numpy数组。是的,您是对的!在确保两个dfs的索引相同后,我不再需要添加.value