如果不遍历dataframe的每一行(这对于大型数据集来说可能非常慢),我如何使用一行中两列的计算结果2*A - B
,在列B
中找到一个值,并从新行中从列C
中提取数据,然后放入原始行的列D
。你知道吗
例如,在下面的数据帧中,行2
的2*A - B
等于1
。第0
行的B
列有一个1
,因此第0
行的C
列中的数据应该放在第2
行的D
列中。你知道吗
In [1] import pandas as pd
In [2] a = [3,3,3]
In [3] b = [1,3,5]
In [4] c = [3,4,5]
In [5] df1 = pd.DataFrame({'A': a , 'B': b, 'C':c})
Out[5] print(df1)
A B C
0 3 1 3
1 3 3 4
2 3 5 5
生成的数据帧应如下所示:
A B C D
0 3 1 3 5
1 3 3 4 4
2 3 5 5 3
我假设A
和B
的每个组合只有一个唯一的值。虽然上面的例子可以通过简单地将列C
转换成列D
来完成,但我希望有一个更通用的解决方案,可以扩展到数据不适合转换的情况。你知道吗
使用
pd.DataFrame.eval
但如果你想要快的话。你知道吗
如果你能保证独特的组合,那么。。。你知道吗
创建
B
值到C
值的映射。执行操作(2*A-B),并使用前面生成的mapping
来获得适当的C
值。你知道吗如果映射不存在,则不替换计算值。如果希望将其替换为
NaN
,则可以使用map
:它的工作原理与
df.replace
相同,但未映射的值将替换为NaN
。你知道吗相关问题 更多 >
编程相关推荐