[英]Add a column to a dataframe and fill with Nan missing values
大家好,我是 python 的新手,我不知道如何解決這個問題。 我有以下代碼:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])
df2 = pd.DataFrame(np.array([10, 20, 30]), columns=['d'])
df3 = pd.DataFrame(np.array([11, 21, 31, 32]), columns=['e'])
df1 = df1.join(df2['d'])
df1 = df1.join(df3['e'])
print(df1)
我得到的結果:
a b c d e
0 1 2 3 10 11
1 4 5 6 20 21
2 7 8 9 30 31
我想得到的結果
a b c d e
0 1 2 3 10 11
1 4 5 6 20 21
2 7 8 9 30 31
3 Nan Nan Nan Nan 32
前面的示例是重現我的問題的最小代碼。 關鍵是我想添加一列,但我不能假設所有列都具有相同的長度。 最后,生成的 dataframe 的行數應等於最長系列的長度,其他列應填充 NaN 值。
您可以嘗試concat
默認為outer
pd.concat((df1,df2,df3),axis=1)
或者
嘗試outer
連接
df1 = df1.join(df2['d'], how='outer')
df1 = df1.join(df3['e'], how='outer')
print(df1)
a b c d e
0 1.0 2.0 3.0 10.0 11
1 4.0 5.0 6.0 20.0 21
2 7.0 8.0 9.0 30.0 31
3 NaN NaN NaN NaN 32
只需添加如何處理最后一次連接中連接在一起的兩個對象的操作。
df1 = df1.join(df3['e'])
默認怎么left
您可以使用right
或outer
[這里是代碼]
df1 = df1.join(df3['e'], how='right')
或者
df1 = df1.join(df3['e'], how='outer')
[這里是結果]
有關更完整的信息,您可以在此處閱讀文檔: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.ZFC35FDC70D5FC69D269883A8E2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.