数据框df1
包含Week
列,Mon
:Sun
,Total
。
以下是创建新数据框的3种方法' df2'来自df1中的列:
df2 = pd.concat(
[df1.Sun,df1.Mon,
df1.Tues, df1.Weds,
df1.Thurs, df1.Fri,
df1.Sat], axis=1)
df2 = df1.drop(['Week', 'Total'], axis=1)
df2 = df1[['Sun','Mon','Tues','Weds','Thurs','Fri','Sat']]
这些有何不同?在什么情况下每个都有利?
答案 0 :(得分:0)
我认为主要优势是处理时间。我拿了你的例子,制作了一些样本数据,并使用timeit库对它们进行了比较。看起来选项2和3要快得多。我会使用选项2,如果有很多列,并且将它们全部写出来是不方便的,反之亦然,选项3.希望这会有所帮助。
import pandas as pd
import numpy as np
daysOfWeek = ['Sun','Mon','Tues','Weds','Thurs','Fri','Sat', 'Week', 'Total']
df1 = pd.DataFrame()
for i in range(0, len(daysOfWeek)):
#create array with random numbers
df1[daysOfWeek[i]] = np.random.randint(0,10,500)
print(df1.head())
第一个选项:100个循环,最佳3:每循环1.01毫秒
%%timeit -n 100
df2 = pd.concat(
[df1.Sun,df1.Mon,
df1.Tues, df1.Weds,
df1.Thurs, df1.Fri,
df1.Sat], axis=1)
第二个选项:100个循环,最佳3:每循环743μs
df2 = df1.drop(['Week', 'Total'], axis=1)
第三种选择:100次循环,最佳3次:每次循环838μs
df2 = df1[['Sun','Mon','Tues','Weds','Thurs','Fri','Sat']]