簡體   English   中英

使用正確的索引將列添加到pandas的數據框中

[英]Adding a column to a dataframe in pandas with proper indexing

我每一列都有兩個數據幀。 一個數據幀在另一個意義上是“包含”的,因為索引值和相應的數據包含在另一個數據幀中。 在某種程度上,子數據幀只是從第一個開始過濾的數據。

我想從子數據幀中獲取數據並將其附加到超級數據幀的新列中,其中共有的索引值具有相應的共享數據,而索引值根本不在子數據幀中以np.nan作為數據。

到目前為止,我已經在df1 “包含”了df2 (即過濾后的數據)。

column1 = df1[0]
column2 = df2[0]

indx1 = df1.index
indx2 = df2.index

n = len(df1[column1])
m = len(df2[column2])

a = a = np.zeros(n)
a[:] = np.nan

df1['filtered'] = pd.Series(a, index=indx1)

i = 0
j = 0

while i < n:
    while j < m:
        if indx1.values[i] == indx2.values[j]:
            df1['filtered'].set_value(indx1[i], df2[column2].get_value(indx2[j]))
        t = j
        break

    i = i+1
    j = t+1

但這對我不起作用,因此任何建議將不勝感激。 因為它在語法上是正確的(假設我在這里正確地寫下了它),但是它可以永遠運行。

謝謝

我正在嘗試猜測您想要實現的目標。

df1
Out[927]: 
          A
0  0.077544
1  0.450615
2  0.427897
3  0.729260
4  0.679355
5  0.275869
6  0.441755
7  0.996711
8  0.358979
9  0.552371

df2
Out[928]: 
          A
4  0.679355
5  0.275869
6  0.441755
7  0.996711

pd.merge(df1,df2,how='left',left_index=True,right_index=True)
Out[929]: 
        A_x       A_y
0  0.077544       NaN
1  0.450615       NaN
2  0.427897       NaN
3  0.729260       NaN
4  0.679355  0.679355
5  0.275869  0.275869
6  0.441755  0.441755
7  0.996711  0.996711
8  0.358979       NaN
9  0.552371       NaN

您可以通過以下方式使用concat:

df = pd.concat([df1, df2], axis=1)

df1:
  Column 1
1     0001
2     0001
3     0002
4     0002
5     0003
6     0003
7     0003

df2:
  Column 2
3     0001
4     0001
5     0002

output:
  Column 1 Column 2
1     0001      NaN
2     0001      NaN
3     0002     0001
4     0002     0001
5     0003     0002
6     0003      NaN
7     0003      NaN

暫無
暫無

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

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