我试图弄清楚如果满足某些条件是否可以重命名列标题。我有一个熊猫数据框:
import pandas as pd
data = [[1,'Joe', '2018', 5,7,9]]
df = pd.DataFrame(data, columns = ['ID', 'Name', 'Year', 'FallScore', 'WinterScore', 'SpringScore'])
print(df)
ID Name Year FallScore WinterScore SpringScore
0 1 Joe 2018 5 7 9
Run Code Online (Sandbox Code Playgroud)
我想做的是,如果列中包含“秋季”、“冬季”或“春季”,则将字符串“NEW”添加到列标题的末尾。这是所需的输出。
df_desired = pd.DataFrame(data, columns = ['ID', 'Name', 'Year', 'FallScoreNEW', 'WinterScoreNEW', 'SpringScoreNEW'])
print(df_desired)
ID Name Year FallScoreNEW WinterScoreNEW SpringScoreNEW
0 1 Joe 2018 5 7 9
Run Code Online (Sandbox Code Playgroud)
我能够获取每个术语的布尔值数组,但无法弄清楚如果找到“秋季”、“冬季”或“春季”,如何替换列标题。请注意,我不知道实际的列标题,我只知道它们将包含“秋季”、“冬季”或“春季”
我获取布尔值数组的方法如下:
df.columns.str.contains('Fall')
df.columns.str.contains('Winter')
df.columns.str.contains('Spring')
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
我是R的新手,我写了一个代码,我相信可以通过for循环来缩短代码。问题是我不知道如何编写循环。
我有一个带有“ TestGrade”列的数据框,其值类似于“ Grade 1”或“ Kindergarten”。我试图将该列更改为仅一个数字值。例如,将“幼儿园”更改为0,将“等级1”更改为1。我将在示例数据框的下面提供代码,以及如何无循环解决问题。
任何指导将不胜感激!
##Sample Data
FirstInitial <- c("A", "D", "M", "C", "J", "S", "K", "L", "M", "K", "G", "B", "F")
LastInitial <- c("S", "M", "T", "M", "A", "B", "H", "M", "S", "W", "L", "Z", "P")
TestGrade <- c('Kindergarten', 'Grade 1','Grade 2', 'Grade 3','Grade 4', 'Grade 5', 'Grade 6','Grade 7','Grade 8', 'Grade 9', 'Grade 10', 'Grade 11','Grade 12')
df <- data.frame(FirstInitial, LastInitial, TestGrade)
##The codes current function
if(any(df$TestGrade == 'Kindergarten')){
df$TestGrade <- gsub('Kindergarten', '0', df$TestGrade)
}
if(any(df$TestGrade …
Run Code Online (Sandbox Code Playgroud) 我是 python 的新手,我正在尝试计算每行的非 na 值,并将总数保存到一个新变量中。
我有数据框:
data = {'x1': ["Yes", "Yes", "No"],
'x2': ["Yes",np.nan, "Yes"],
'x3': [np.nan, np.nan, "No"]}
df = pd.DataFrame(data, columns = ['x1', 'x2', 'x3'])
print(df)
x1 x2 x3
0 Yes Yes NaN
1 Yes NaN NaN
2 No Yes No
Run Code Online (Sandbox Code Playgroud)
我想要做的是计算每一行的答案数量,然后将该总数保存到一个新变量中。所需的输出如下所示:
x1 x2 x3 Total
0 Yes Yes NaN 2
1 Yes NaN NaN 1
2 No Yes No 3
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但我无法弄清楚。任何帮助将不胜感激。
谢谢
我不知道是否有这个功能,但我有3个不同长度的数据帧.我想知道是否有办法找到哪一个是最大长度并将其加载到变量中.例如:
x <- c(1:10)
y <- c(1:20)
z <- c(1:40)
Run Code Online (Sandbox Code Playgroud)
我想使用z作为我的变量,因为它具有最长的长度.有没有一个函数可以搜索这三个变量(x,y,z)并给我一个长度最长的变量?
谢谢
我正在尝试在 for 循环中更改所有数据框中的变量名称。数据的任何示例是:
df1 <- data.frame(
Number = c(45,62,27,34,37,55,40),
Day = c("Mon", "Tues", "Wed", "Thurs", "Fri", "Sat", "Sun"))
df2 <- data.frame(
Number = c(15,20,32,21,17,18,13),
Day = c("Mon", "Tues", "Wed", "Thurs", "Fri", "Sat", "Sun"))
df3 <- data.frame(
Number = c(12,32,22,14,16,21,30),
Day = c("Mon", "Tues", "Wed", "Thurs", "Fri", "Sat", "Sun")
L <- list(df1,df2,df3)
Run Code Online (Sandbox Code Playgroud)
我目前的尝试是:
for(i in L){
colnames(L) <- c("NewName1", "NewName2")
}
Run Code Online (Sandbox Code Playgroud)
哪个不起作用,我不明白为什么它不起作用。请让我知道是否有人可以指导我朝着正确的方向前进。
我希望找到一个简单的解决方案,但我一直没能找到一个解决方案。可以说我有两个包含4个数据帧的列表。列表的每个项目都是一个数据框。一个清单叫做
list_of_df1
Run Code Online (Sandbox Code Playgroud)
另一个叫做
list_of_df2
Run Code Online (Sandbox Code Playgroud)
我想知道是否有将一个列表中的数据框追加到另一个列表中的方法。最终目标是拥有一个包含所有8个数据帧的组合列表。抱歉,我没有提供样本数据。我希望这是简单的代码行。
这是我尝试的:
list_of_df1.append(list_of_df2)
list_of_df1.insert(list_of_df2)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我试图格式化数据文件,但我的问题是一些文件包含比其他更多的变量.我想更改列名以适合我的主数据文件.
例如
df <- data.frame(
f =c(111,123,128),
w = c(99,84,102),
s = c(122,105,112) )
Run Code Online (Sandbox Code Playgroud)
返回
f w s
1 111 99 122
2 123 84 105
3 128 102 112
Run Code Online (Sandbox Code Playgroud)
为了重命名我做的列:
rename_df <- df %>% rename(Fall=f,Winter=w, Spring=s)
Run Code Online (Sandbox Code Playgroud)
我的问题是,一些数据文件只有Fall,有些来自秋天和冬天,有些来自全部3,或者你能想到的任何组合.我试图找出R是否还有寻找"f","w","s",当它找到其中一个列名时,它会将其更改为相应的文本("Fall","Winter" ,"春天")当列的一次不存在时,它就会忽略它.我正在尝试制作一个代码,一旦数据文件进来,我就可以通过该代码运行它,它将返回给我一个df,并更改了相应的列.
谢谢