我已使用以下方法成功更改数据帧中的单个列名:
df.columns=['new_name' if x=='old_name' else x for x in df.columns]
然而,我有很多列要更新(但不是全部240个),如果我能帮助它,我不想为每一个变化写出来。
在这篇帖子中,我试图遵循@StefanK的建议:
更改多个列名,但不是所有列名-Python
我的代码:
df.columns=[[4,18,181,182,187,188,189,190,203,204]]=['Brand','Reason','Chat_helpful','Chat_expertise','Answered_questions','Recommend_chat','Alternate_help','Customer_comments','Agent_category','Agent_outcome']
但我收到一条错误消息:
File "<ipython-input-17-2808488b712d>", line 3
df.columns=[[4,18,181,182,187,188,189,190,203,204]]=['Brand','Reason','Chat_helpful','Chat_expertise','Answered_questions','Recommend_chat','Alternate_help','Customer_comments','Agent_category','Agent_outcome']
^
SyntaxError: can't assign to literal
所以在谷歌搜索了错误并阅读了更多的S.O.问题之后,在我看来,它似乎试图将数字作为整数而不是索引来读取?不过我不确定。
那么,我该如何修复它,使它将数字视为索引?!我要替换的列名每个至少有10个单词长,所以我不想把它们全部打印出来!我唯一的想法是以某种方式使用iloc,但我正在进入一个新的领域!
非常感谢你的帮助
由于索引不支持可变操作,请将其转换为numpy数组,然后重新分配和设置:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
arr = df.columns.to_numpy()
arr[[0,2,3]] = list('RTG')
df.columns = arr
print (df)
R B T G E F
0 a 4 7 1 5 a
1 b 5 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 7 9 b
4 e 5 2 1 2 b
5 f 4 3 0 4 b
因此,随着您的数据使用:
idx = [4,18,181,182,187,188,189,190,203,204]
names = ['Brand','Reason','Chat_helpful','Chat_expertise','Answered_questions','Recommend_chat','Alternate_help','Customer_comments','Agent_category','Agent_outcome']
arr = df.columns.to_numpy()
arr[idx] = names
df.columns = arr
删除代码中df.columns后面的“=”,改为使用:
df.columns.values[[4,18,181,182,187,188,189,190,203,204]]=['Brand','Reason','Chat_helpful','Chat_expertise','Answered_questions','Recommend_chat','Alternate_help','Customer_comments','Agent_category','Agent_outcome']
我想将以下数据框的第1列重命名为“Ref”。我有很多列,因此无法重命名每个列或为每个列设置名称。 这是数据帧 现在我想将第一列重命名为'Ref'。我试过这个 它重命名所有标题与列[1]相似的列。
假设是一个数据帧。 只接受名字 只接受整数(实际放置) 接受名称和整数: 当引用行时,只希望获得名称。例如 抛出一个错误,它不会返回“2”。 当引用列时,iloc更喜欢整数,而不是名称。例如 返回“三”,而不是2。(尽管返回)。 奇怪的是,我喜欢完全相反的功能。通常我的列名非常有意义,所以在我的代码中我直接引用它们。但是由于大量的观察清理,我的熊猫数据帧中的行名称通常不对应于。 我意识到我可以使用
给定一个数据帧say,包含100列和100行,我需要列的子集。我想同时索引两个(或多个)列块。 例如,我想要的是: (显然,这不起作用) 但是我想要第1列到第20列以及第55列到第57列。我可以用两个单独的操作来实现这一点,并将它们连接起来,但我想知道是否有一个功能可以让这一点只需一次(我知道R有这个功能,因此好奇)。 编辑:我在这里发现了一个类似的问题,但答案是字符串。可以进行多个子集设置的解决
我正在生成1和0的数据帧,如下所示: 由reprex软件包(v0.1.1.9000)于2018-01-08创建。 我需要按变量的总和升序排列,然后按每个变量的降序排列。使用相当简单。然而,我想有一个更稳健的安排方法。例如,如果更改为,那么最后一行也必须更改为。我尝试使用整齐的选择器进行排列,就像使用函数一样,但出现以下错误: 由reprex软件包(v0.1.1.9000)于2018-01-08创建
我有两个不同列数和行数的CSV文件。第一个CSV文件有M列和N行,第二个文件有H列和G行。一些列具有相同的名称。 null 另外,如果两个CSV文件有两个数据帧,并希望这样做,例如,如果我将第一个CSV加载到中,将第二个加载到中,然后希望合并到,类似于上面的示例。
我有一个查询,可以查找与某个数据库的列名匹配的所有表和视图。我正在使用SQL SERVER 2008 我想扩展查询的功能,以便在所有数据库中搜索,甚至查找具有我搜索的列名的存储过程。