簡體   English   中英

向 dataframe 添加一列並填充 Nan 缺失值

[英]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

您可以使用rightouter

[這里是代碼]

df1 = df1.join(df3['e'], how='right')

或者

df1 = df1.join(df3['e'], how='outer')

[這里是結果]

1 2

有關更完整的信息,您可以在此處閱讀文檔: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.ZFC35FDC70D5FC69D269883A8E2

暫無
暫無

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

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