创建列表(然后为数据帧分配列表)和在迭代时使用loc更新数据帧之间有什么区别


# 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)

最新更新