小编Jak*_*ake的帖子

如果满足条件,重命名 pandas 数据框中的列

我试图弄清楚如果满足某些条件是否可以重命名列标题。我有一个熊猫数据框:

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)

任何帮助将不胜感激!

python rename dataframe pandas

5
推荐指数
1
解决办法
6539
查看次数

使用for循环更改数据框中的列

我是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)

for-loop r dataframe

3
推荐指数
2
解决办法
80
查看次数

按行计算非 na 值并将总数保存到熊猫中的新变量

我是 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)

这看起来很简单,但我无法弄清楚。任何帮助将不胜感激。

谢谢

python count dataframe pandas

3
推荐指数
1
解决办法
1295
查看次数

从R中的3个不同向量中找出最长的长度

我不知道是否有这个功能,但我有3个不同长度的数据帧.我想知道是否有办法找到哪一个是最大长度并将其加载到变量中.例如:

x <- c(1:10)
y <- c(1:20)
z <- c(1:40)
Run Code Online (Sandbox Code Playgroud)

我想使用z作为我的变量,因为它具有最长的长度.有没有一个函数可以搜索这三个变量(x,y,z)并给我一个长度最长的变量?

谢谢

r variable-length

2
推荐指数
1
解决办法
737
查看次数

使用for循环更改多个数据框的列名,并将数据框加载到列表中

我正在尝试在 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)

哪个不起作用,我不明白为什么它不起作用。请让我知道是否有人可以指导我朝着正确的方向前进。

iteration for-loop r list dataframe

1
推荐指数
1
解决办法
1536
查看次数

在Python中将数据框列表追加到数据框列表

我希望找到一个简单的解决方案,但我一直没能找到一个解决方案。可以说我有两个包含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)

谢谢!

python list dataframe pandas

1
推荐指数
1
解决办法
65
查看次数

适当时更改列名,并忽略不适用

我试图格式化数据文件,但我的问题是一些文件包含比其他更多的变量.我想更改列名以适合我的主数据文件.

例如

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,并更改了相应的列.

谢谢

r dplyr tidyr

0
推荐指数
1
解决办法
50
查看次数

标签 统计

dataframe ×5

r ×4

pandas ×3

python ×3

for-loop ×2

list ×2

count ×1

dplyr ×1

iteration ×1

rename ×1

tidyr ×1

variable-length ×1