用另一个数据框中的值填充列

时间:2020-03-22 15:10:10

标签: python pandas dataframe

我想用同一列df(〜1.000.000行)中的值填充df2的列(〜100.000行)。 Df通常在同一行中有几次,但是数据错误,所以我一直想取列“ C”的第一个值。

df = pd.DataFrame([[100, 1, 2], [100, 3, 4], [100, 5, 6], [101, 7, 8], [101, 9, 10]],
                  columns=['A', 'B', 'C'])

df2=pd.DataFrame([[100,0],[101,0]], columns=['A', 'C'])

for i in range(0,len(df2.index)):
    #My Question:
    df2[i,'C']=first value of 'C' column of df where the 'A' column is the same of both dataframes. E.g. the first value for 100 would be 2 and then the first value for 101 would be 8

最后,我的输出应该是这样的表:

df2=pd.DataFrame([[100,2],[101,8]], columns=['A', 'C'])

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

df2['C'] = df.groupby('A')['C'].first().values

哪个会给您:

    A   C
0   100 2
1   101 8

first()返回每个组的第一个值。
然后,您想将值分配给df2列,不幸的是,您不能像这样直接分配结果:
df2['C'] = df.groupby('A')['C'].first()。 因为上面的行将导致:

    A   C
0   100 NaN
1   101 NaN

(您可以在此处了解原因:Adding new column to pandas DataFrame results in NaN