1つだけが選択されているのに、パンダのデータフレームが2つの列を返すのはなぜですか[重複]
Nov 23 2020
matplotlibでいくつかのプロットを作成しているときに、パンダの奇妙な動作を見つけました。1つの列だけを選択すると、2が返されます。
import pandas as pd
import io
data = io.StringIO("""time_0,1,time_1,2,time_2,0,time_3,3
-0.002,-0.1225,-0.002,-0.0904,-0.002,0.0331,-0.002,0.,
0.0,-0.1225,0.,-0.0904,0.,0.0331,0.,0.,
0.002,-0.1224,0.002,-0.0904,0.002,0.0331,0.002,0.,
0.004,-0.1225,0.004,-0.0904,0.004,0.0331,0.004,0.,""")
df = pd.read_csv(data)
print(df["time_0"])
出力:
-0.002 -0.1225
0.000 -0.1225
0.002 -0.1224
0.004 -0.1225
名前:time_0、dtype:float64
列「time_0」と「1」の両方の値が表示されますが、「time_0」のみが選択されています。これはバグですか、それとも機能ですか?
回答
1 adirabargil Nov 23 2020 at 17:31
データフレームは1行のみを返しますが、列「1」と同じインデックスをプリオンします。
df
Out[3]:
time_0 1 time_1 2 time_2 0 time_3 3
-0.002 -0.1225 -0.002 -0.0904 -0.002 0.0331 -0.002 0.0 NaN
0.000 -0.1225 0.000 -0.0904 0.000 0.0331 0.000 0.0 NaN
0.002 -0.1224 0.002 -0.0904 0.002 0.0331 0.002 0.0 NaN
0.004 -0.1225 0.004 -0.0904 0.004 0.0331 0.004 0.0 NaN
意図せずに最初の列をインデックスとして使用しているようです...各行に余分な部分,
があるため、最後の列をnan値として使用しています...。
,
:を削除してみてください
import pandas as pd
import io
data = io.StringIO("""time_0,1,time_1,2,time_2,0,time_3,3
-0.002,-0.1225,-0.002,-0.0904,-0.002,0.0331,-0.002,0.
0.0,-0.1225,0.,-0.0904,0.,0.0331,0.,0.
0.002,-0.1224,0.002,-0.0904,0.002,0.0331,0.002,0.
0.004,-0.1225,0.004,-0.0904,0.004,0.0331,0.004,0.""")
df = pd.read_csv(data)
print(df["time_0"])
このコードは印刷されます
0 -0.002
1 0.000
2 0.002
3 0.004
Name: time_0, dtype: float64