パンダとナンディの世界全体にはとても新しいものです。私はPythonの経験がありますが、この面ではありません。私はデータセットで作業しようとしていましたが、私は説明できないという問題を発見しました。経験豊富な人が何が間違っているのか理解するのに役立ちます。パンダのデータフレームに機能が正しく適用されていません
私は3つのフィールドを持つCSVファイルを持っています。 「年齢」、「労働者階級」、および「所得」。ヘッダはので、私は次のようにCSVを読み込ま欠落していた - 「< = 50K」または「> 50K」 -
import numpy as np
import pandas as pd
df = pd.read_csv("test.csv", index_col=False, header=None, names=["age", "workclass", "income"])
さて最後の列のデータは、この形式です。私は上記の値に基づいてデータを "0"または "1"に変換したいと思っていました。 "< = 50K"の場合は0、 "> 50K"の場合は1です。達成するために私はこのコード行を書いた
def test_func(x):
if x == "<=50K":
return "0"
else:
return "1"
df['income'] = df['income'].apply(test_func)
これはすべての列を "1"にする!私はtest_funcの中にいくつかの印刷を行い、xが適切な値を持ち、xの型が "str"であるように見えます。私は理解できません。この場合、いつも「else」部分が実行され、「if」部分は決して実行されません。私は間違って何をしていますか?
私が間違っていると間違っていることがあります。私は確信していませんし、どんな助けも素晴らしいでしょう。
ありがとうございます。
フィールド値にスペースがあることがわかったため、2番目の方法を使用しました。そのため、元の適用比較も失敗したのです。最初の方法で文字列を取り除く方法が見つかりませんでした。しかし、df ['income'] = np.where(df.income.str.strip()== "<= 50K"、1,0)の場合、完全に動作します。皆さん、お返事ありがとうございます。それは私にパンダの良い教訓を与えました。 – SRC