Python 如何合并具有相同列名的数据帧?
索引是一个时间戳和列名,还可以将NaN替换为值。它似乎不起作用 样本:Python 如何合并具有相同列名的数据帧?,python,pandas,Python,Pandas,索引是一个时间戳和列名,还可以将NaN替换为值。它似乎不起作用 样本: import pandas as pd times = pd.to_datetime(pd.Series(['2014-07-4', '2014-07-15','2014-08-24','2014-08-25','2014-09-10','2014-09-17'])) valuea = [0.01, 0.02, -0.03, 0.4 ,0.5,np.NaN] times2 = pd.to_datetime(pd.Seri
import pandas as pd
times = pd.to_datetime(pd.Series(['2014-07-4',
'2014-07-15','2014-08-24','2014-08-25','2014-09-10','2014-09-17']))
valuea = [0.01, 0.02, -0.03, 0.4 ,0.5,np.NaN]
times2 = pd.to_datetime(pd.Series(['2014-07-6',
'2014-07-16','2014-08-27','2014-09-5','2014-09-11','2014-09-17']))
valuea2 = [1, 2, 3, 4,5,-6]
df1 = pd.DataFrame({'value A': valuea}, index=times)
df2 = pd.DataFrame({'value A': valuea2}, index=times2)
df3=pd.merge(df1,df2, left_index=True, right_index=True)
df3.head()
假设你需要外部连接
pd.concat([df1,df2],axis=1)
Out[321]:
value A value A
2014-07-04 0.01 NaN
2014-07-06 NaN 1.0
2014-07-15 0.02 NaN
2014-07-16 NaN 2.0
2014-08-24 -0.03 NaN
2014-08-25 0.40 NaN
2014-08-27 NaN 3.0
2014-09-05 NaN 4.0
2014-09-10 0.50 NaN
2014-09-11 NaN 5.0
2014-09-17 NaN -6.0
更新
df1.combine_first(df2)
Out[324]:
value A
2014-07-04 0.01
2014-07-06 1.00
2014-07-15 0.02
2014-07-16 2.00
2014-08-24 -0.03
2014-08-25 0.40
2014-08-27 3.00
2014-09-05 4.00
2014-09-10 0.50
2014-09-11 5.00
2014-09-17 -6.00
您是否有任何错误?请尝试将
np.Nan
替换为np.Nan
对不起,键入错误…可能您需要pd.concat([df1,df2])
?pd.concat([df1,df2])
就可以了。@ramich这是联合的_first@Wen,我不确定我是否完全理解OP的问题,但是的,你是对的pd.concat([df1,df2]).dropna()
的等价项将是df1。首先合并(df2)
。毕竟OP确实提到了NaN
值。不清楚OP是要删除它还是保留它,然后使用.fillna()