Python-是否可以使用空白列创建连接字符串

时间:2018-10-16 07:25:21

标签: python string function join

我仍然是python的新用户,并尝试使用python制作最长的普通子序列。但是我想知道如何创建一个循环来首先逐行比较值。这是数据示例。

class Test extends React.Component {
  render() {
    const name = 'san';
    const parsedName = name.replace(new RegExp('san', 'ig'), '<span>span</span>');
    return (
    	<div dangerouslySetInnerHTML={{__html: parsedName}}/>
    );
  }
}

ReactDOM.render(
  <Test/>,
  document.getElementById('container')
);

这是我要适应的LCS的示例代码。

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container">
</div>

我创建了另一个用于压缩LCS的功能

row col1  col2  col3  col4   col5  col6 
0   'A'   '11'  'B'           
1   'A'   '11'  'B'   '121'     
2   'A'   '12'  'B'   '123'  '124'   
3   'A'   '13'  'B'   '123'  '124'  '456' 

但结果为错误->'float'类型的对象没有len()

假设

import pandas as pd

df_hier = pd.read_csv("sample.csv")

row1 = df_hier.iloc[1:2, 2:20]
row2 = df_hier.iloc[3:4, 2:20]

    def lcs(s1, s2):
        matrix = [["" for x in range(len(s2))] for x in range(len(s1))]
        for i in range(len(s1)):
            for j in range(len(s2)):
                if s1[i] == s2[j]:
                    if i == 0 or j == 0:
                        matrix[i][j] = s1[i]
                    else:
                        matrix[i][j] = matrix[i-1][j-1] + s1[i]
                else:
                    matrix[i][j] = max(matrix[i-1][j], matrix[i][j-1], key=len)

        cs = matrix[-1][-1]

        return len(cs), cs

    print(lcs(row1, row2))  

预期结果将是

(4,'A1B1')

提前谢谢

1 个答案:

答案 0 :(得分:1)

关于该错误,您得到的消息是:“类型为'float'的对象没有len()”,因为您试图在NaN上执行函数,在这种情况下,试图将NaN传递给len()。相反,您想要使用函数pd.isnull()/ pd.notnull()检查值是否为NaN。 (使用“ ==”进行比较也不起作用)。

顺便说一句,它不是字符串“ NaN”,而是可以用“ pd.np.nan”提及的特殊对象。

我建议修复以下行:

lcss = [lcs(*x) if pd.notnull(x[0]) and pd.notnull(x[1]) else (0, pd.np.nan) for x in pairs]