>>> df.loc['2','B']=9 >>> df A B C D 10123 24967 3891011 412131415 >>> chooses = df['B'].drop_duplicates().index # B列删除重复行后的索引 >>> df.loc[chooses] # 删除B列重复的行 A B C D 10123 24967 412131415
s = [a + c for a, c inzip(df['A'], df['C'])] s = [row['A'] + row['C'] for i, row in df.iterrows()] # 通过iterrows()获取序列,s为list s = df.apply(lambda row: row['A'] + row['C'], axis=1) # 通过apply获取序列,s为Series s = df['A'] + df['C'] # 通过Series矢量相加获取序列 s = df['A'].values + df['C'].values # 通过Numpy矢量相加获取序列
df['E'] = None# 需事先创建e列,否则iloc遍历会报错,loc遍历无需事先创建 for i inrange(len(df)): df['E'].iloc[i] = df['A'].iloc[i] + df['C'].iloc[i] # SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
不用Series不会报Warning:
1 2 3 4
df['E'] = None col_no = [i for i in df.columns].index('E') for i inrange(len(df)): df.iloc[i, col_no] = df['A'].iloc[i] + df['C'].iloc[i]
用loc无需先给E列赋空值:
1 2
for i in df.index: df.loc[i, 'E'] = df.loc[i, 'A'] + df.loc[i, 'C']