私はこの質問があまり意味がないかもしれないことは知っていますが、うまくいけば次の例でそれを明確にします。私は列sentA
で1つの文字列を参照し、それをsentB
のすべての文字列と比較する必要があります。次の例は、私がquestions
と定義したデータフレームを示しています。Pythonの不均一な列より関数をどのように反復処理しますか?
sentA sentB
str1 str1
str2 str2
str3
私は現在、唯一の偶数列を比較することができます使用するとこのようになりますよコード:
def compare(row):
sentA = row[0]
return pd.Series([simalarity_funct(sentA, sentB) for sentB in questions['sentB']])
results = questions.apply(compare, axis=1).T
このコードはstr1A(str1B、str2B、およびstr3Bへの類似性)のために私に3つの出力を与え、それらを列に入れます。ここで
は数字DFの入力に基づいて単純化されたコードと別の例である:
num1 num2
3 5
4 6
7
def multiply(num1, num2):
return num1*num2
def compare(row):
num1 = row[0]
# I would like to prevent this next statement from passing an "NaN" to the
# multiply function. The empty cells will always be at the end of the column.
return pd.Series([multiply(num1, num2) for num2 in numbers['num2']])
results = numbers.apply(compare, axis=1).T
print(results)
15 20 NaN
18 24 NaN
21 28 NaN
根本的な問題は、それが不良データを供給されている場合、私の類似度関数がエラーをスローしますということです。私がこれを修正すると考えることができる最も簡単な方法は、悪いデータを与えないことです。類似点関数に "NaN"を渡さないように最後のステップを変更する方法はありますか?
孤立した抜粋ではなく、完全に実行できる例を提供してください。 – Gabriel
私はこれを説明するために使用できる別の機能について考えようとします。私が使用している関数を定義するには、いくつかの大きなライブラリと数十行のコードが必要です。私はそれを更新します。 – rtaylor
@Gabriel私は、実行可能な例を明確にしようとしました。 – rtaylor