# importing pandas as pd
import pandas as pd
# Create the dataframe
df = pd.DataFrame({
'Product': ['Umbrella', 'Matress', 'Badminton',
'Shuttle', 'Sofa', 'Football'],
'MRP': [1200, 1500, 1600, 352, 5000, 500],
'Discount': [0, 10, 0, 10, 20, 40]
})
#Option 1
lst=[]
for index,row in df.iterrows():
lst.append(somefn(row['MRP']))
df['newcol']=lst
#Option 2
for index,row in df.iterrows():
df.loc[index,'newcol']=somefn(row['MRP'])
#Option 3 (this is chaining so won't update original df)
for index,row in df.iterrows():
df[index].loc['newcol']=somefn(row['MRP'])
创建列表/列表分配和在迭代时使用loc更新数据帧之间有什么区别?
最大的区别在于,创建列表时,在将列表分配给数据帧列之前,需要将列表转换为序列。我认为最优雅的方法是使用apply
方法:
# importing pandas as pd
import pandas as pd
# Create the dataframe
df = pd.DataFrame({
'Product': ['Umbrella', 'Matress', 'Badminton',
'Shuttle', 'Sofa', 'Football'],
'MRP': [1200, 1500, 1600, 352, 5000, 500],
'Discount': [0, 10, 0, 10, 20, 40]
})
#Option 4
df['newcol']=df['MRP'].apply(somefn)