小编ozh*_*gin的帖子

根据条件替换数据框列中的值

我有一个看似简单的任务.具有2列的数据帧:A和B.如果B中的值大于A中的值 - 用值A替换这些值.我曾经这样做过df.B[df.B > df.A] = df.A,但是最近的pandas升级开始给出了SettingWithCopyWarning遇到此链式赋值的时间.官方文档建议使用.loc.

好吧,我说,并且完成了它df.loc[df.B > df.A, 'B'] = df.A并且一切正常,除非B列具有所有值NaN.然后发生了一些奇怪的事:

In [1]: df = pd.DataFrame({'A': [1, 2, 3],'B': [np.NaN, np.NaN, np.NaN]})

In [2]: df
Out[2]: 
   A   B
0  1 NaN
1  2 NaN
2  3 NaN

In [3]: df.loc[df.B > df.A, 'B'] = df.A

In [4]: df
Out[4]: 
   A                    B
0  1 -9223372036854775808
1  2 -9223372036854775808
2  3 -9223372036854775808
Run Code Online (Sandbox Code Playgroud)

现在,如果B中的一个元素满足条件(大于A),那么一切正常:

In [1]: df = pd.DataFrame({'A': [1, 2, …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

确定等价类的算法

相当一般的问题.我有一个这样的列表:

A B  
A C  
C A   
D E  
F G   
E F  
C L  
M N  
Run Code Online (Sandbox Code Playgroud)

等等.

我想做的是弄清楚所有的关系,把所有相关的东西放在一行.上面的例子将成为:

A B C L   
D E F G  
M N      
Run Code Online (Sandbox Code Playgroud)

这样每个字母只出现一次,并且彼此相关的字母在一行中显示(列表,数组,等等).

这是一个定义明确的算法的某种已知问题吗?它有名字吗?听起来应该是这样.我假设应该采用某种递归解决方案.

algorithm

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

标签 统计

algorithm ×1

dataframe ×1

pandas ×1

python ×1