簡體   English   中英

熊貓菲納與多列

[英]pandas fillna with multiple columns

我使用pandas.concat將多個Dataframe連接在一起,並希望用其他幾列的value填充NaN值。

要獲取下表,我做了: 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

有沒有更Python的方式來做到這一點? 感覺就像我錯過了什么

如果確保df1df2df3具有相同的列,則可以根據需要完成串聯。

在這種情況下,您可以執行以下操作:

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重命名列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM