这真的很奇怪,因为只有合并两个Stock以“1”开头的数据帧时才会发生这种情况
>>> df_mo
Stock Momentum_
0 1A0 0.00
1 1A1 0.00
2 1A4 0.00
3 1B0 0.00
4 1B1 0.15
5 1B6 0.00
6 1C0 0.00
7 1C3 0.00
8 1C5 0.00
9 1D0 0.00
10 1D1 0.00
11 1D3 -0.50
12 1D4 0.00
13 1D5 0.00
14 1D8 0.00
15 40B -0.15
16 40D 0.00
17 40E 0.00
18 40F 0.00
19 40N 0.00
20 40R 0.00
21 40S 0.15
22 40T 0.15
23 40U 0.00
24 40V 0.00
25 40W 0.00
26 41A 0.00
27 41B 0.15
28 41F 0.00
29 41H 0.00
.. ... ...
757 T8JU 0.00
758 T8V 0.00
759 TQ5 0.00
760 TS0U 0.00
761 U04 0.00
762 U06 0.00
763 U09 0.00
764 U10 0.00
765 U11 0.00
766 U13 0.00
767 U14 0.00
768 U6C 0.00
769 U77 0.00
770 U96 0.00
771 U9E 0.00
772 UD1U 0.00
773 UD2 0.00
774 UV1 0.00
775 V01 0.00
776 V03 0.00
777 W05 0.00
778 Y03 0.00
779 Y06 0.00
780 Y35 0.00
781 Y45 0.00
782 Y92 0.00
783 Z25 0.00
784 Z59 0.00
785 Z74 0.00
786 Z77 0.00
[787 rows x 2 columns]
>>> df_active
Stock Active
0 1A0 0.35
1 1A1 0.35
2 1A4 -0.35
3 1B0 0.50
4 1B1 -0.35
5 1B6 -0.35
6 1C0 0.50
7 1C3 -0.35
8 1C5 0.35
9 1D0 -0.50
10 1D1 0.50
11 1D3 0.35
12 1D4 -0.50
13 1D5 0.35
14 1D8 -0.50
15 40B 0.35
16 40D -0.35
17 40E -0.50
18 40F -0.35
19 40N 0.35
20 40R 0.25
21 40S 0.50
22 40T 0.50
23 40U 0.35
24 40V 0.35
25 40W -0.35
26 41A -0.35
27 41B -0.35
28 41F 0.50
29 41H -0.50
.. ... ...
757 T8JU 0.35
758 T8V 0.35
759 TQ5 -0.50
760 TS0U 0.50
761 U04 0.50
762 U06 0.50
763 U09 -0.50
764 U10 0.50
765 U11 0.50
766 U13 -0.35
767 U14 0.50
768 U6C -0.25
769 U77 -0.25
770 U96 -0.50
771 U9E -0.50
772 UD1U 0.50
773 UD2 -0.50
774 UV1 -0.35
775 V01 -0.50
776 V03 0.50
777 W05 0.25
776 V03 0.50
778 Y03 0.20
779 Y06 -0.35
780 Y35 0.35
781 Y45 -0.25
782 Y92 0.50
783 Z25 0.50
784 Z59 0.50
785 Z74 -0.35
786 Z77 0.50
[787 rows x 2 columns]
但当我合并这两个数据帧时,以“1”开头的股票都被复制了3倍
>>> pd.merge(df_mo,df_active,how='outer',on='Stock')
Stock Momentum_ Active
11 1A4 0.00 -0.35
0 1A0 0.00 0.35
1 1A0 0.00 0.35
2 1A0 0.00 0.35
3 1A0 0.00 0.35
4 1A1 0.00 0.35
5 1A1 0.00 0.35
6 1A1 0.00 0.35
7 1A1 0.00 0.35
8 1A4 0.00 -0.35
9 1A4 0.00 -0.35
10 1A4 0.00 -0.35
11 1A4 0.00 -0.35
12 1B0 0.00 0.50
13 1B0 0.00 0.50
14 1B0 0.00 0.50
15 1B0 0.00 0.50
16 1B1 0.15 -0.35
17 1B1 0.15 -0.35
18 1B1 0.15 -0.35
19 1B1 0.15 -0.35
20 1B6 0.00 -0.35
21 1B6 0.00 -0.35
22 1B6 0.00 -0.35
23 1B6 0.00 -0.35
24 1C0 0.00 0.50
25 1C0 0.00 0.50
26 1C0 0.00 0.50
27 1C0 0.00 0.50
28 1C3 0.00 -0.35
29 1C3 0.00 -0.35
.. ... ... ...
787 T8JU 0.00 0.35
788 T8V 0.00 0.35
789 TQ5 0.00 -0.50
790 TS0U 0.00 0.50
791 U04 0.00 0.50
792 U06 0.00 0.50
793 U09 0.00 -0.50
794 U10 0.00 0.50
795 U11 0.00 0.50
796 U13 0.00 -0.35
797 U14 0.00 0.50
798 U6C 0.00 -0.25
799 U77 0.00 -0.25
800 U96 0.00 -0.50
801 U9E 0.00 -0.50
802 UD1U 0.00 0.50
803 UD2 0.00 -0.50
804 UV1 0.00 -0.35
805 V01 0.00 -0.50
806 V03 0.00 0.50
807 W05 0.00 0.25
808 Y03 0.00 0.20
809 Y06 0.00 -0.35
810 Y35 0.00 0.35
811 Y45 0.00 -0.25
812 Y92 0.00 0.50
813 Z25 0.00 0.50
814 Z59 0.00 0.50
815 Z74 0.00 -0.35
816 Z77 0.00 0.50
[817 rows x 3 columns]
因为合并的结果使它更行。我有许多需要合并的数据帧,因此最终会产生更多的行
对于以“4”开头的数字或任何其他数字或字符串,该代码实际上运行良好。它只是对以“1”开头的数字有一些问题
如何使其只能正确合并
在
Stock
列中存在重复值的问题,重复值以1
开头您可以通过以下方式进行检查:
解决方法是删除重复项。例如:
样品:
相关问题 更多 >
编程相关推荐