如何在python pandas中获取索引列名?这是一个示例数据帧:
Column 1
Index Title
Apples 1
Oranges 2
Puppies 3
Ducks 4
Run Code Online (Sandbox Code Playgroud)
我想要做的是获取/设置数据帧索引标题.这是我试过的:
import pandas as pd
data = {'Column 1' : [1., 2., 3., 4.],
'Index Title' : ["Apples", "Oranges", "Puppies", "Ducks"]}
df = pd.DataFrame(data)
df.index = df["Index Title"]
del df["Index Title"]
print df
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?
以下函数对是否生成完全相同的结果?
对1)names()&colnames()
对2)rownames()&row.names()
我在表中意外更改了一个值.有问题的列是CreatedDate:这是在我的项目创建时设置的,但它是由存储过程更改的.
我可以写一些类型的SELECT语句来获取从我的表中引用此列的所有过程名称吗?
在MSSQL中,我可以选择一个列并通过执行以下操作来更改列标题:
SELECT mycolumn as 'MyNewColumnName' from MyTable
Run Code Online (Sandbox Code Playgroud)
这在Oracle中不起作用.我如何在Oracle中执行相同的操作?
我最近发现了大熊猫"分配"方法,我发现它非常优雅.我的问题是新列的名称被指定为关键字,因此它不能包含空格或破折号.
df = DataFrame({'A': range(1, 11), 'B': np.random.randn(10)})
df.assign(ln_A = lambda x: np.log(x.A))
A B ln_A
0 1 0.426905 0.000000
1 2 -0.780949 0.693147
2 3 -0.418711 1.098612
3 4 -0.269708 1.386294
4 5 -0.274002 1.609438
5 6 -0.500792 1.791759
6 7 1.649697 1.945910
7 8 -1.495604 2.079442
8 9 0.549296 2.197225
9 10 -0.758542 2.302585
Run Code Online (Sandbox Code Playgroud)
但是如果我想将新列命名为"ln(A)"呢?例如
df.assign(ln(A) = lambda x: np.log(x.A))
df.assign("ln(A)" = lambda x: np.log(x.A))
File "<ipython-input-7-de0da86dce68>", line 1
df.assign(ln(A) = lambda x: np.log(x.A))
SyntaxError: keyword …Run Code Online (Sandbox Code Playgroud) 如果我不知道列名,但是想通过变量指定列名,我怎样才能将列名传递给dplyr?
例如,这工作:
require(dplyr)
df <- as.data.frame(matrix(seq(1:9),ncol=3,nrow=3))
df$group <- c("A","B","A")
gdf <- df %.% group_by(group) %.% summarise(m1 =mean(V1),m2 =mean(V2),m3 =mean(V3))
Run Code Online (Sandbox Code Playgroud)
但事实并非如此
require(dplyr)
someColumn = "group"
df <- as.data.frame(matrix(seq(1:9),ncol=3,nrow=3))
df$group <- c("A","B","A")
gdf <- df %.% group_by(someColumn) %.% summarise(m1 =mean(V1),m2 =mean(V2),m3 =mean(V3))
Run Code Online (Sandbox Code Playgroud) 假设我们有两个熊猫数据框。第一个没有列名:
no_col_names_df = pd.DataFrame(np.array([[1,2,3], [4,5,6], [7,8,9]]))
Run Code Online (Sandbox Code Playgroud)
第二个有:
col_names_df = pd.DataFrame(np.array([[10,2,3], [4,45,6], [7,18,9]]),
columns=['col1', 'col2', 'col3'])
Run Code Online (Sandbox Code Playgroud)
我想要做的是让副本列名来自col_names_df于no_col_names_df这样下的数据帧创建:
col1 col2 col3
0 1 2 3
1 4 5 6
2 7 8 9
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
new_df_with_col_names = pd.DataFrame(data=no_col_names_df, columns=col_names_df.columns)
Run Code Online (Sandbox Code Playgroud)
但不是来自no_col_names_dfI getNaN的值。
在创建数据框时(或者在使用cbind的类似情况下)R中是否有一种方法可以将变量计算为列名?
例如
a <- "mycol";
d <- data.frame(a=1:10)
Run Code Online (Sandbox Code Playgroud)
这将创建一个数据框,其中一列命名a而不是mycol.
这比帮助我从代码中删除相当多行的情况要重要得多:
a <- "mycol";
d <- cbind(some.dataframe, a=some.sequence)
Run Code Online (Sandbox Code Playgroud)
我目前的代码遭受了折磨:
names(d)[dim(d)[2]] <- a;
Run Code Online (Sandbox Code Playgroud)
这是美学上的barftastic.
我有一个非常简单的表genre,看起来像这样:
GENRE
=====
id int
genre_category varchar()
Run Code Online (Sandbox Code Playgroud)
genre_category 具有"叙事","神话"等价值观.
genre_category这个专栏似乎是一个愚蠢的名字.列可以被称为genre_type或genre_label或genre_category.但这似乎是多余的.
那么,有没有理由不继续打电话呢genre.genre?
编辑:
最重要的是,它最好使用.name.感谢大家!