我使用pandas.concat
将多个Dataframe
加在一起,并希望将一个列中的NaN
值填入其他几列的value
。
为了得到下表,我做了:z = pandas.concat([df1, df2, df3], axis=0, join='outer')
连接表
C_header1 C_header2 C_header3 Column1 Column2 Column3
0 Item1 NaN NaN Values Values Values
1 Item2 NaN NaN Values Values Values
2 Item3 NaN NaN Values Values Values
3 Item4 NaN NaN Values Values Values
4 Item5 NaN NaN Values Values Values
5 NaN Item6 NaN Values Values Values
6 NaN Item7 NaN Values Values Values
7 NaN Item8 NaN Values Values Values
8 NaN NaN Item9 Values Values Values
9 NaN NaN Item10 Values Values Values
目前,我运行以下代码将C_header1, C_header2, C_header3
放在一起
z['C_header1'].fillna(z['C_header2'], inplace=True)
z['C_header1'].fillna(z['C_header3'], inplace=True)
z.drop(['C_header2', 'C_header3'], inplace=True)
获取
C_header1 Column1 Column2 Column3
0 Item1 Values Values Values
1 Item2 Values Values Values
2 Item3 Values Values Values
3 Item4 Values Values Values
4 Item5 Values Values Values
5 Item6 Values Values Values
6 Item7 Values Values Values
7 Item8 Values Values Values
8 Item9 Values Values Values
9 Item10 Values Values Values
有更多的pythonic方式吗?感觉就像我错过了一些东西
答案 0 :(得分:-1)
如果您确保df1
,df2
和df3
具有相同的列,则会根据需要进行连接。
在这种情况下,你可以这样做:
df2.columns = df1.columns
df3.columns = df1.columns
# at this point concat will give you the desired result
pandas.concat(rename_columns(df1, df2, df3))
注意一般来说,最好使用pandas.DataFrame.rename重命名列。