Pandas 熊猫使用多列连接
得到如下数据帧,我正试图根据“文件日期”和“符号”将它们连接起来,这两个数据帧都是通用的Pandas 熊猫使用多列连接,pandas,Pandas,得到如下数据帧,我正试图根据“文件日期”和“符号”将它们连接起来,这两个数据帧都是通用的 df_clean.head(100) File_date Symbol hv20 hv50 hv100 Date curiv Days Percentile Close Changed 4609 20180423 ZYNE 68 64 64.0 180423.0 65.86 430.0
df_clean.head(100)
File_date Symbol hv20 hv50 hv100 Date curiv Days Percentile Close Changed
4609 20180423 ZYNE 68 64 64.0 180423.0 65.86 430.0 11.0 10.36 1
>>> df_clean.index
Int64Index([4609, 4611, 4608, 4606, 4603, 4600, 4609, 4607, 4604, 4604,
...
0, 0, 0, 0, 0, 0, 0, 0, 0, 4617], dtype='int64', length=419721)
>>> df_allhv_to_date.head(100)
hv5 hv10 dj20 Symbol
20180423 24.18 22.50 30.01 ZYNE
df_allhv_to_date.index
Int64Index([20171219, 20171220, 20171221, 20171222, 20171226, 20171227, 20171228, 20171229, 20180102, 20180103,
...
20180410, 20180411, 20180412, 20180413, 20180416, 20180417, 20180418, 20180419, 20180420, 20180423], dtype='int64', length=425)
想要
File_date Symbol hv5 hv10 dj20 hv20 hv50 hv100 Date curiv Days Percentile Close Changed
20180413 ZYNE 23.04 34.22 30.61 73 67 65.0 180413.0 79.87 424.0 48.0 10.17 0
我试过了
df_for_sql = pd.merge(df_allhv_to_date , df_clean , how='left', left_on=['File_date','Symbol'], right_on = ['File_date','Symbol'])
但它不起作用。请问我错过了什么 您的问题是“df_allfv_to_date”中的日期数据在索引中。因此,我认为我们先命名索引,然后将数据移出索引并按如下方式连接这些列:
df_for_sql = pd.merge(df_allhv_to_date.rename_axis('File_date', axis=0).reset_index(),
df_clean,
how='left',
on = ['File_date','Symbol'])
尝试
df_for_sql=pd.merge(df_allhv_to_date.重命名_axis('File_date',axis=0).重置索引(),df_clean,how='left',left_on=['File_date','Symbol'],right_on=['File_date','Symbol'])
看起来在df allhv_to_to_date中没有列,因为它是一个索引列。您的加入是在值列上,而不是索引列上。@ScottBoston Holy Zarquon的歌唱鱼,专注于像冠军一样工作。哇!我喜欢你整洁地纠正文件日期问题的方式。太谢谢你了,我根本就没办法做到这一点。我不能把这个作为答案,因为我没有足够的分数。谢谢你,斯帕克well@sio2bagger我写了一个答案,并将代码压缩了一点。再次感谢@ScottBoston我现在正在处理整个问题,我不会发现这个问题。我的熊猫需要工作。再次感谢