我正在比较两个数据帧以确定 df1 中的行是否以 df2 中的任何行开头。df1 的数量为一千个条目,df2 的数量为数百万个。
这可以完成工作,但速度相当慢。
df1['name'].map(lambda x: any(df2['name'].str.startswith(x)))
Run Code Online (Sandbox Code Playgroud)
在 df1(10 项)的子集上运行时,结果如下:
35243 True
39980 False
40641 False
45974 False
53788 False
59895 True
61856 False
81083 True
83054 True
87717 False
Name: name, dtype: bool
Time: 57.8873581886 secs
Run Code Online (Sandbox Code Playgroud)
当我将 df2 转换为列表时,它运行得更快:
df2_list = df2['name'].tolist()
df1['name'].map(lambda x: any(item.startswith(x + ' ') for item in df2_list))
35243 True
39980 False
40641 False
45974 False
53788 False
59895 True
61856 False
81083 True
83054 True
87717 False
Name: name, dtype: …Run Code Online (Sandbox Code Playgroud) 我有一个带有datetime列的pandas数据框。我使用以下方法按天分组,然后按小时分组:
df.groupby([df['date'].map(lambda t: t.day), df['date'].map(lambda t: t.hour)]).count()
Run Code Online (Sandbox Code Playgroud)
不幸的是,这给我留下了一个双重索引,两个索引都称为日期。第一个日期是一个月中的一天,第二个日期是小时,字节是该小时中的项目计数:
我正在尝试利用这些日期列,但不能。我尝试重置索引,但收到此错误:
ValueError: cannot insert date, already exists
Run Code Online (Sandbox Code Playgroud)
我也无法重命名列,因为“日期”没有出现在列列表中:
grouped_df.columns
>> Index([u'bytes'], dtype='object')
Run Code Online (Sandbox Code Playgroud)
最终,我试图找到每天每一小时的商品数。如何重命名重复的日期列?我是否应该使用其他方法对数据帧进行分组以避免这种困境?
我刚刚开始python,所以我很可能只是在做一些愚蠢的事情.我正在从表中读取数据,需要将它们放入txt文件中的列中.我无法说服我的代码创建一个新行.
这是我的代码 -
file = open("test_m.rdb")
table = open('table.txt', 'w+')
trash = file.readline()
trash = file.readline()
data = file.readline()
i = data.split()
flux = i[2]
observed = i[4]
table.write(flux + " " + observed,)
while 1:
line = file.readline()
i = line.split()
try:
flux = i[2]
observed = i[4]
except IndexError:
break
table.write(\nflux + " " + observed)
table.close()
Run Code Online (Sandbox Code Playgroud)
错误如下 -
File "PlotRdbFile.py", line 24
table.write(\nflux + " " + observed)
^
SyntaxError: unexpected character after line continuation character
Run Code Online (Sandbox Code Playgroud)
提前谢谢你发现我的错误.