我有一个pandas数据帧,我从csv文件读入的值.我有一个标有'SleepQuality'的列,值从0.0到100.0浮动.我想创建一个标记为'SleepQualityGroup'的新列,其中原始列btw 0 - 49中的值在新列中的值为0,50 - 59 = 1,60 - 69 = 2,70 - 79 = 3,80 - 89 = 4,而90 - 100 = 5
为了做到这一点,最好的配方是什么?我坚持识别每个范围中所有值并分配给新值所需的逻辑.
下面在新的"SleepQualityGroup"列中输出结果的示例.
SleepQuality SleepQualityGroup
80.4 4
90.1 5
66.4 2
50.3 1
86.2 4
75.4 3
45.7 0
91.5 5
61.3 2
54 1
58.2 1
Run Code Online (Sandbox Code Playgroud) 我想识别包含特定列文本的 Pandas csv 文件中的所有实例,在本例中为“注释”列,其中提到了“练习”一词。一旦在“Notes”列中识别出包含“excercise”关键字的行,我想创建一个名为“ExcerciseDay”的新列,如果满足“excercise”条件则为 1,否则为 0 . 我遇到了麻烦,因为文本可以在“注释”列中包含长字符串值(即“锻炼、早晨锻炼、消耗的酒精、消耗的咖啡”),我仍然希望它识别“锻炼”,即使它在更长的时间内细绳。
我尝试了下面的功能,以识别“注释”列中包含“锻炼”一词的所有文本。使用此函数时未选择任何行,我知道这可能是因为 * 运算符,但我想显示逻辑。可能有一种更有效的方法来做到这一点,但我对编程和 python 仍然比较陌生。
def IdentifyExercise(row):
if row['Notes'] == '*exercise*':
return 1
elif row['Notes'] != '*exercise*':
return 0
JoinedTables['ExerciseDay'] = JoinedTables.apply(lambda row : IdentifyExercise(row), axis=1)
Run Code Online (Sandbox Code Playgroud) 我有一个csv文件,我读入了pandas数据帧.有两个特定的列,'Notes'和'ActivityType',我想用作标准.如果'Notes'列包含字符串值'Morning exercise'或'Morning exercise'和/或'ActivityType'列包含任何字符串值(大多数单元格为空,我不想计算Null值),那么make一个新列'MorningExercise'并在满足任一条件时插入1,如果不满足则插入0.
我一直在使用下面的代码创建一个新列,如果在'Notes'列中满足文本条件,则插入1或0,但如果'ActivityType'列包含任何内容,我还没想出如何包含1字符串值.
JoinedTables['MorningExercise'] = JoinedTables['Notes'].str.contains(('Morning workout' or 'Morning exercise'), case=False, na=False).astype(int)
Run Code Online (Sandbox Code Playgroud)
对于'ActivityType'列,我认为使用该pd.notnull()函数作为批评.
我真的只需要在python中查看是否连续满足任一条件,如果是,则在新列中输入1或0.