1
假設我有2個數據幀:分配第一數據幀的柱到第二個,如果數據幀具有不同的尺寸
df1 = pd.DataFrame(np.arange(0,301),columns = ['id'])
df2 = pd.DataFrame(np.arange(200,387),columns = ['id'])
df1['2'] = np.random.randint(0,2,301)
df2['2'] = np.random.randint(0,2,187)
然後我匹配ID的從第二數據幀到第一和創建第三DF:
temp = df2.loc[df2['id'].isin(df1['id'])]
然後,我計算了一些值:
def values_14(row):
if row['2'] == 1:
return 1
else:
return 0
temp['val'] = temp.apply(lambda row: values_14(row),axis = 1)
我的問題是:如何從賦值數據幀temp
的列val
到第一個數據幀(如果第一個數據幀中的id
不匹配到temp
的id
,則分配NA)通用?一般來說,我的意思是這種情況,例如,id
列是名稱,它們不像數字那樣排序。我如何在熊貓中做到這一點?
讓我問了幾個問題: 1)val_df = temp.loc [溫度[ '身份證'] ==行[ '身份證' ]]這一行在同一時間比較(True False)行['id']與temp ['id']的每個值? 2)df1.loc [index,'val'] = val_df ['val']。values [0] here can can please please me me why we need need to code values [0] from RHS? –
@Mat_nekras對於'1)'是的,比較後它會有'True或False'。對於'2)','val_df ['val']'返回'Series',所以'.values'將它改爲'ndarray'和'.values [0]',從數組中選擇第一個元素。可能還有其他選擇和有效的方法。 – 0p3n5ourcE
只有一個問題出現:當id值爲stings時,代碼不起作用。我說,索引應該是整數或切片,但不是字符串 –