pd.read_csvとStringIOを使用してデータフレームを作成したときに列をマッピングするときに問題があり、テキストの文字列をデータフレームに変換した後、特定の列を辞書にマッピングして、マップされるNaN値。なぜこれはそうですか?Python:StringIOの変換エラーがcsvデータフレームとpandasデータフレームを変換しましたか?
これに対して、私が直接作成したパンダのデータフレームからのものであれば、辞書を使って直接列をマップするとエラーは発生しませんでした。エラーがでてくるのはここ
はコードです:import pandas as pd
from io import StringIO
df1 = unicode('''
green, M, 10.1, class1
red, L, 13.5, class2
blue, XL, 15.3, class1
''')
df1 = pd.read_csv(StringIO(df1), header = None)
df1.columns = ['color', 'size', 'price', 'classlabel']
size_mapping = {
'XL':3,
'L': 2,
'M': 1,
}
df1['size'] = df1['size'].map(size_mapping)
print df1
戻り値この:この対
color size price classlabel
0 green NaN 10.1 class1
1 red NaN 13.5 class2
2 blue NaN 15.3 class1
:私はこれが代わりに返されます
import pandas as pd
from io import StringIO
df1 = pd.DataFrame([
['green', 'M', 10.1, 'class1'],
['red', 'L', 13.5, 'class2'],
['blue', 'XL', 15.3, 'class1']
])
df1.columns = ['color', 'size', 'price', 'classlabel']
size_mapping = {
'XL':3,
'L': 2,
'M': 1,
}
df1['size'] = df1['size'].map(size_mapping)
print df1
:
color size price classlabel
0 green 1 10.1 class1
1 red 2 13.5 class2
2 blue 3 15.3 class1
なぜ私はユニコードファイルから読み込んだものを変換しようとすると違いがありますか?