我有一个使用pandas和列标签的DataFrame,我需要编辑它来替换原始列标签.
我想更改A原始列名称所在的DataFrame 中的列名:
['$a', '$b', '$c', '$d', '$e']
Run Code Online (Sandbox Code Playgroud)
至
['a', 'b', 'c', 'd', 'e'].
Run Code Online (Sandbox Code Playgroud)
我将已编辑的列名存储在列表中,但我不知道如何替换列名.
我想知道是否有一个函数来更改特定的列名但没有选择特定的名称或没有更改所有列名称.
我有代码:
df=df.rename(columns = {'nameofacolumn':'newname'})
Run Code Online (Sandbox Code Playgroud)
但有了它,我必须手动改变每个人写下每个名字.还要改变我所有的一切
df = df.columns['name1','name2','etc']
Run Code Online (Sandbox Code Playgroud)
我想有一个功能来更改第1列和第3列,而不是只写出它们的位置来写出它们的名字.谢谢!
为了理解我的问题,我首先要指出的是,R数据表不仅仅是具有语法糖的R数据帧,还存在重要的行为差异:数据表中的列引用/引用修改可以避免在内存中复制整个对象(参见示例)在这个quora答案中)就像数据帧中的情况一样.
我曾经多次发现,data.table行为产生的速度和记忆差异是一个关键因素,它允许人们使用一些大数据集,而这种data.frame行为是不可能的.
因此,我想知道的是:在Python中,Pandas'数据帧在这方面的表现如何?
额外的问题:如果Pandas的数据帧更接近R数据帧而不是R数据表,并且具有相同的下行(分配/修改列时对象的完整副本),是否有相当于R的data.table包的Python ?
每条评论请求编辑:代码示例:
R数据帧:
# renaming a column
colnames(mydataframe)[1] <- "new_column_name"
Run Code Online (Sandbox Code Playgroud)
R数据表:
# renaming a column
library(data.table)
setnames(mydatatable, 'old_column_name', 'new_column_name')
Run Code Online (Sandbox Code Playgroud)
在熊猫:
mydataframe.rename(columns = {'old_column_name': 'new_column_name'}, inplace=True)
Run Code Online (Sandbox Code Playgroud) 有没有办法在pandas dataframe中使用lambda但不是全部更改某些列名?例如,假设该数据帧具有其名称是列osx,centos,ubunto,windows.在这个数据框中,我想用附加的列名替换所有列名x,所以在这种情况下,我可以通过以下方式重命名列名:
df.rename(columns=lambda x: x+'x')
Run Code Online (Sandbox Code Playgroud)
但是,如果我想重命名除了以外的所有列名ubunto,我该怎么办呢?因此,我希望得到的是数据帧,其名称是osxx,centosx,ubunto,windowsx.实际上,我真正的数据框有更多的列,所以我不喜欢使用通常的字典语法一个一个地写出来,而是希望在lambda可行的情况下依靠函数.
谢谢.
长话短说
我有一个嵌套字典.当我把它变成数据帧时.
import pandas
pdf = pandas.DataFrame(nested_dict)
95 96 97 98 99 100 101 102 103 104 105 \
A 70019 102 4243 3083 3540 6311 4851 5938 4140 4659 3100
C 0 185 427 433 1190 910 3898 3869 2861 2149 3065
D 8 9 23463 1237 2574 4174 3640 4747 3557 4582 5934
E 141 89 5034 1576 2303 3416 2377 1252 1204 1703 718
F 7 12 1937 2246 1687 1154 1317 3473 1881 2221 3060
G …Run Code Online (Sandbox Code Playgroud)