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