データフレームを考える:
np.random.seed(0)
df = pd.DataFrame(np.random.randn(3, 3), columns=list('ABC'), index=[1, 2, 3])
df
A B C
1 1.764052 0.400157 0.978738
2 2.240893 1.867558 -0.977278
3 0.950088 -0.151357 -0.103219
0などの定数値を含む新しい列を追加する最も簡単な方法は何ですか?
A B C new
1 1.764052 0.400157 0.978738 0
2 2.240893 1.867558 -0.977278 0
3 0.950088 -0.151357 -0.103219 0
これは私の解決策ですが、なぜこれがNaNを「新しい」列に入れるのかわかりません。
df['new'] = pd.Series([0 for x in range(len(df.index))])
A B C new
1 1.764052 0.400157 0.978738 0.0
2 2.240893 1.867558 -0.977278 0.0
3 0.950088 -0.151357 -0.103219 NaN
このプット理由NaN
列には、ためているdf.index
とIndex
、あなたの右手側のオブジェクトのは異なっています。@zachは、ゼロの新しい列を割り当てる適切な方法を示しています。一般に、pandas
は可能な限り多くのインデックスの整列を試みます。欠点の1つは、インデックスが整列NaN
していない場合、整列していない場所に到達することです。遊んでreindex
とalign
、部分的に持っているオブジェクトとの位置合わせ作品のいくつかの直感を得るための方法、完全、かつ、整列されていない、すべての整列のインデックスを。たとえばDataFrame.align()
、部分的に整列されたインデックスを使用する方法は次のとおりです。
In [7]: from pandas import DataFrame
In [8]: from numpy.random import randint
In [9]: df = DataFrame({'a': randint(3, size=10)})
In [10]:
In [10]: df
Out[10]:
a
0 0
1 2
2 0
3 1
4 0
5 0
6 0
7 0
8 0
9 0
In [11]: s = df.a[:5]
In [12]: dfa, sa = df.align(s, axis=0)
In [13]: dfa
Out[13]:
a
0 0
1 2
2 0
3 1
4 0
5 0
6 0
7 0
8 0
9 0
In [14]: sa
Out[14]:
0 0
1 2
2 0
3 1
4 0
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
Name: a, dtype: float64
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加