我知道这应该很简单,但是我想从熊猫数据框中取一列,并且只对满足某些条件(比如小于1)的条目乘以标量(比如2)。
例如,在这个数据框中,
df = pd.DataFrame(randn(5,4),index='A B C D E'.split(),columns='W X Y Z'.split())
W X Y Z
A 2.706850 0.628133 0.907969 0.503826
B 0.651118 -0.319318 -0.848077 0.605965
C -2.018168 0.740122 0.528813 -0.589001
D 0.188695 -0.758872 -0.933237 0.955057
E 0.190794 1.978757 2.605967 0.683509
如果我有兴趣在列W
上执行此操作,结果应该是
W X Y Z
A 2.706850 0.628133 0.907969 0.503826
B 1.302236 -0.319318 -0.848077 0.605965
C -4.036336 0.740122 0.528813 -0.589001
D 0.37739 -0.758872 -0.933237 0.955057
E 0.381588 1.978757 2.605967 0.683509
我有以下绝对任务:
df.loc[df['W'] < 1, 'W'] = 4
但是我不知道如何使用W
中的实际值。
提前谢谢!
您还可以使用numpy。其中
:
df['W'] = numpy.where(df['W'] < 1, df['W'] * 2, df['W'])
它会检查您的状况并应用相关操作。
在您的情况下,只需使用*=
运算符来使乘法就位:
如果原始数据帧看起来像:
>>> df
W X Y Z
0 2.706850 0.628133 0.907969 0.503826
1 0.651118 -0.319318 -0.848077 0.605965
2 -2.018168 0.740122 0.528813 -0.589001
3 0.188695 -0.758872 -0.933237 0.955057
4 0.190794 1.978757 2.605967 0.683509
您可以使用:
df.loc[df['W'] < 1, 'W'] *= 2
因此:
>>> df
W X Y Z
0 2.706850 0.628133 0.907969 0.503826
1 1.302236 -0.319318 -0.848077 0.605965
2 -4.036336 0.740122 0.528813 -0.589001
3 0.377390 -0.758872 -0.933237 0.955057
4 0.381588 1.978757 2.605967 0.683509
这相当于以下内容:
df.loc[df['W'] < 1, 'W'] = df.loc[df['W'] < 1, 'W'] * 2
我有一个很大的数据表,其中每一行都需要基于完整数据表的一部分进行计算。作为一个例子,考虑下面的数据表,并假设每一行的I都需要计算当前行的id2与id1匹配的每一行的num变量之和,以及当前行的时间变量在距离当前行的时间1的范围内。 这可以通过像这样循环每一行来轻松完成 生成的 data.table 如下所示: 什么是正确的/快速的方法来做这样的事情使用data.table?
我有一个猫鼬模式 我最初设置了名称和电话字段的集合。我需要将集合更新为消息数组中的新消息和新地址到地址对象中。该函数还必须处理任何单个操作,即在某些情况下我只更新到消息数组或更新到名称和地址。所以我如何在单个函数中执行所有操作。
为了写出更实用的程序,我们几乎总是需要检查特定条件,并相应地改变程序的行为。条件语句给了我们这种能力。最简单的形式是if语句: if( x > 0){ cout << "x is positive" <<endl; } 圆括号中的表达式被称为条件。如果条件为真,则花括号中的语句会被执行。否则不执行。 条件可以包括任何比较操作符: x == y //x等于y x !=
(我很抱歉我的例子过于简单,我将尝试解决这个问题,并以更方便的格式格式化我更相关的示例,以便直接复制到R中。特别是,有多个值列,以及前面一些不需要解析的其他信息的列。 我对R和data.table都不熟悉,所以我希望能就我发现的一个问题提供意见。我正在处理一个数据表,其中一列是冒号分隔的格式字符串,作为其他冒号分隔列中值的图例。为了解析它,我必须首先将其拆分为它的组件,然后搜索我需要稍后索引值字符
我可以通过使用WatchKey注册cw来监视目录(网络上有很多例子),但是这个监视程序会捕捉到每一个事件。例如,在windows上,如果我监视d:/temp dir并创建一个新的。txt文件并将其重命名,我得到以下事件。 我想在创建或更新新文件时执行一个操作。但是,我不希望在上面的示例中该操作运行5次。 我的第一个想法:因为我只需要每隔一段时间运行一次操作(在这种情况下是推送到私有Git服务器)(