の数に基づいて、新しいデータフレーム、私が唯一の最も発生した行を含む新しいデータフレームを作成したい:パンダ発生箇所
私のコードは以下の通りです:取得する2つのファイルから
import pandas as pd
f1=pd.read_csv('FILE1.csv')
f2=pd.read_csv('FILE2.csv')
df_all = f2.merge(f1, how='left', on='Symbol')
df_sort = df_all.sort_values(by=['Symbol','Date'], ascending=[True,True])
df_sort=df_sort.dropna()
df_cnt=df_sort['Symbol'].value_counts()
元データdf_allにマージ:
In[1]: f1
Out[2]:
Symbol Weight
0 IBM 0.2
1 GE 0.3
2 AAPL 0.4
3 XOM 0.1
In[2]: f2
Out[3]:
Date Symbol ClosingPrice
0 3/1/2010 IBM 116.51
1 3/2/2010 IBM 117.32
2 3/3/2010 IBM 116.40
3 3/4/2010 IBM 116.58
4 3/5/2010 IBM 117.61
5 3/1/2010 GE 45.00
6 3/2/2010 GE 43.50
7 3/3/2010 GE 46.00
8 3/1/2010 AAPL 85.07
9 3/2/2010 AAPL 85.10
10 3/3/2010 AAPL 86.20
11 3/4/2010 AAPL 84.93
12 3/5/2010 AAPL 84.80
13 3/1/2010 XOM 98.15
14 3/2/2010 XOM 99.00
15 3/3/2010 XOM 98.23
16 3/4/2010 XOM 97.56
17 3/1/2010 MSFT 99.00
18 3/2/2010 MSFT 98.00
19 3/3/2010 MSFT 97.00
20 3/4/2010 MSFT 98.00
21 3/5/2010 MSFT 97.00
In[4]:df_all
Out[4]:
Date Symbol ClosingPrice Weight
0 3/1/2010 IBM 116.51 0.2
1 3/2/2010 IBM 117.32 0.2
2 3/3/2010 IBM 116.40 0.2
3 3/4/2010 IBM 116.58 0.2
4 3/5/2010 IBM 117.61 0.2
5 3/1/2010 GE 45.00 0.3
6 3/2/2010 GE 43.50 0.3
7 3/3/2010 GE 46.00 0.3
8 3/1/2010 AAPL 85.07 0.4
9 3/2/2010 AAPL 85.10 0.4
10 3/3/2010 AAPL 86.20 0.4
11 3/4/2010 AAPL 84.93 0.4
12 3/5/2010 AAPL 84.80 0.4
13 3/1/2010 XOM 98.15 0.1
14 3/2/2010 XOM 99.00 0.1
15 3/3/2010 XOM 98.23 0.1
16 3/4/2010 XOM 97.56 0.1
17 3/1/2010 MSFT 99.00 NaN
18 3/2/2010 MSFT 98.00 NaN
19 3/3/2010 MSFT 97.00 NaN
20 3/4/2010 MSFT 98.00 NaN
21 3/5/2010 MSFT 97.00 NaN
私はその後除去NaN値を使用してデータを並べ替える:
In[5]: df_sort
Out[5]:
Date Symbol ClosingPrice Weight
8 3/1/2010 AAPL 85.07 0.4
9 3/2/2010 AAPL 85.10 0.4
10 3/3/2010 AAPL 86.20 0.4
11 3/4/2010 AAPL 84.93 0.4
12 3/5/2010 AAPL 84.80 0.4
5 3/1/2010 GE 45.00 0.3
6 3/2/2010 GE 43.50 0.3
7 3/3/2010 GE 46.00 0.3
0 3/1/2010 IBM 116.51 0.2
1 3/2/2010 IBM 117.32 0.2
2 3/3/2010 IBM 116.40 0.2
3 3/4/2010 IBM 116.58 0.2
4 3/5/2010 IBM 117.61 0.2
13 3/1/2010 XOM 98.15 0.1
14 3/2/2010 XOM 99.00 0.1
15 3/3/2010 XOM 98.23 0.1
16 3/4/2010 XOM 97.56 0.1
私はその後、私は出現数があるデータのみが含まれていdf_final新しいデータフレームを、作成方法のよう立ち往生しています。この時点で、各シンボル
In[6]: df_cnt
Out[6]:
AAPL 5
IBM 5
XOM 4
GE 3
Name: Symbol, dtype: int64
の発生回数の合計を決定最大数で。 。この場合には5
私の最後のデータフレームは、次のようになります。
Date Symbol ClosingPrice Weight
3/1/2010 AAPL 85.07 0.4
3/2/2010 AAPL 85.10 0.4
3/3/2010 AAPL 86.20 0.4
3/4/2010 AAPL 84.93 0.4
3/5/2010 AAPL 84.80 0.4
3/1/2010 IBM 116.51 0.2
3/2/2010 IBM 117.32 0.2
3/3/2010 IBM 116.40 0.2
3/4/2010 IBM 116.58 0.2
3/5/2010 IBM 117.61 0.2
インデックスを削除するにはどうすればいいですか:8,9,10,11,12,0,1。 。 。 。 – John
私は最後に '.reset_index(drop = True)'を追加してインデックスをデフォルトの整数インデックスにリセットできると思います。 –