我有一系列七个数据帧,长度相同。
dates1看起来像:
month day year
0 04 20 2009
1 04 20 09
2 4 20 09
3 4 3 09
4 NaN NaN NaN
5 NaN NaN NaN
6 NaN NaN NaN
7 NaN NaN NaN
8 NaN NaN NaN
...
dates2看起来像:
month day year
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 Mar 20 2009
5 Mar 20 2009
6 Mar 20 2009
7 Mar 20 2009
8 Mar 20 2009
...
依此类推,直至日期7。我想创建一个将它们合并在一起的数据框,但合并似乎并不适合我。
这是我到目前为止所做的事情:
alldates = pd.concat([dates1,dates2,dates3,dates4], axis=0)
return alldates.dropna()
这样的工作,但是一旦我添加了dates5,dates6,dates7,它就会开始搞乱,因为这些数据帧的某些行的索引值与alldates相同。
我很难过。我需要提供哪些更多信息?是否有更优雅的方法来解决这个问题?
答案 0 :(得分:2)
也许您只需要在连接后删除重复索引,只保留第一个,即
alldates = pd.concat([dates1,dates2,dates3,dates4], axis=0).dropna()
alldates = alldates.loc[~alldates.index.duplicated(keep='first')]
print(alldates)
month day year
0 4 20 2009
1 4 20 9
2 4 20 9
3 4 3 9
4 Mar 20 2009
5 Mar 20 2009
6 Mar 20 2009
7 Mar 20 2009
8 Mar 20 2009
如果您尝试从其他数据帧填充nan值,则可以使用
adf = df.fillna(df2)
对于两个以上的数据帧
l = [dates1,dates2]
for i in range(len(l)-1):
ndf = l[i]
ndf = ndf.fillna(l[i+1])
答案 1 :(得分:1)
你可以尝试使用这样的追加:
dataframes = [dates1,dates2,dates3,dates4]
alldates = pd.DataFrame()
for dataframe in dataframes:
alldates = alldates.append(dataframe)
return alldates.dropna()