我想用同一列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'])
答案 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)