天道酬勤,学无止境

如何使用熊猫查找重复名称?(How to find duplicate names using pandas?)

问题

我有一个pandas.DataFrame其中有一个名为name的列,其中包含字符串。 我想获取列中多次出现的名称列表。 我怎么做?

我试过:

funcs_groups = funcs.groupby(funcs.name)
funcs_groups[(funcs_groups.count().name>1)]

但它不会过滤掉单例名称。

回答1

如果您想查找名称重复的行(我们第一次看到的除外),您可以试试这个

In [16]: import pandas as pd
In [17]: p1 = {'name': 'willy', 'age': 10}
In [18]: p2 = {'name': 'willy', 'age': 11}
In [19]: p3 = {'name': 'zoe', 'age': 10}
In [20]: df = pd.DataFrame([p1, p2, p3])

In [21]: df
Out[21]: 
   age   name
0   10  willy
1   11  willy
2   10    zoe

In [22]: df.duplicated('name')
Out[22]: 
0    False
1     True
2    False
回答2

一个班轮可以是:

x.set_index('name').index.get_duplicates()

索引包含查找重复项的方法,列似乎没有类似的方法..

回答3

value_counts 也会给你重复的数量。

names = df.name.value_counts()
names[names > 1]
回答4

给出的大多数回复都演示了如何删除重复项,而不是找到它们。

以下将选择数据框中具有重复'name'字段的每一行。 请注意,这将找到每个实例,而不仅仅是第一次出现后的重复项。 keep参数接受可以排除第一次或最后一次出现的附加值。

df[df.duplicated(['name'], keep=False)]

可以在此处找到duplicated()的pandas 参考。

回答5

另一个班轮可以是:

(df.name).drop_duplicates()
回答6

我遇到了类似的问题并遇到了这个答案。

我想这也有效:

counts = df.groupby('name').size()
df2 = pd.DataFrame(counts, columns = ['size'])
df2 = df2[df2.size>1]

df2.index会给你一个重复的名字列表

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在熊猫数据框中查找重复项(How to find duplicates in pandas dataframe)
    问题 编辑。 假设我在熊猫中有以下系列: >>>p 0 0.0 1 0.0 2 0.0 3 0.3 4 0.3 5 0.3 6 0.3 7 0.3 8 1.0 9 1.0 10 1.0 11 0.2 12 0.2 13 0.3 14 0.3 15 0.3 我需要识别每个连续重复项的序列 - 它的第一个和最后一个索引。 使用上面的示例,我需要独立于最后一个 0.3 序列(从索引 13 到 15)识别 0.3 的第一个序列(从索引 3 到 7)。 使用 Series.duplicated 是不够的,因为: *使用 keep='first' 将所有第一个重复实例标记为 False,但会将索引 13 保留为 True,因为它不是 0.3 的第一次出现。 *同样适用于 keep='last' *keep=False 只是将所有条目标记为 True。 谢谢! 回答1 我相信需要用 cumsum 和最后一个 drop_duplicates 比较移位值的技巧,因为它们不等于 ne: s = df['a'].ne(df['a'].shift()).cumsum() a = s.drop_duplicates().index b = s.drop_duplicates(keep='last').index df = pd.DataFrame({'first':a, 'last':b}) print
  • 如何使用熊猫在一行中查找重复的单词?(How to find duplicate words in a line using pandas?)
    问题 这是示例杰森数据。 id opened_date title exposure state 1 06/11/2014 9:28 AM Device rebooted and crashed with error 0x024 critical open 2 06/11/2014 7:12 AM Not able to connect to WiFi High open 3 07/23/2014 2:11 PM Sensor failed to recognize movement Low open 4 07/07/2014 5:20 PM When sensor activated, device rebooted with error 0x024 critical closed 我想编写一个输入为字符串的代码,输出应指向 ID。 例如: Input String = Sensor : Output = ID 3 and 4 has 'Sensor' word in it Input String = 0x024 : Output = ID 1 and 4 has '0x024' in it. 我猜这将需要某种 groupby,但它适用于完整的数据集而不是字符串。 pandas可以做到这一点,还是有其他更好的解决方案来分析这个问题? 回答1 您可以使用 loc 来按条件创建
  • 按多列分组以查找重复的行熊猫(Grouping by multiple columns to find duplicate rows pandas)
    问题 我有一个df id val1 val2 1 1.1 2.2 1 1.1 2.2 2 2.1 5.5 3 8.8 6.2 4 1.1 2.2 5 8.8 6.2 我想按val1 and val2分组, val1 and val2仅使用具有相同val1 and val2组合多次出现的行获得类似的数据帧。 最终df : id val1 val2 1 1.1 2.2 4 1.1 2.2 3 8.8 6.2 5 8.8 6.2 回答1 您需要使用参数subset进行复制以指定列以使用keep=False检查所有重复项的掩码并通过布尔索引过滤: df = df[df.duplicated(subset=['val1','val2'], keep=False)] print (df) id val1 val2 0 1 1.1 2.2 1 1 1.1 2.2 3 3 8.8 6.2 4 4 1.1 2.2 5 5 8.8 6.2 细节: print (df.duplicated(subset=['val1','val2'], keep=False)) 0 True 1 True 2 False 3 True 4 True 5 True dtype: bool
  • 熊猫模糊检测重复(Pandas fuzzy detect duplicates)
    问题 如何在 Pandas 中使用模糊匹配来检测重复行(有效) 如何在没有将 row_i 转换为 String() 然后将其与所有其他列进行比较的巨大 for 循环的情况下找到一列与所有其他列的重复项? 回答1 不是熊猫特定的,但在 python 生态系统中,重复数据删除 python 库似乎可以做你想做的。 特别是,它允许您分别比较一行的每一列,然后将这些信息组合成一个匹配的概率分数。 回答2 现在有一个包可以更轻松地将重复数据删除库与熊猫一起使用:pandas-dedupe (我是原始 dedupe 库的开发者,但不是 pandas-dedupe 包的开发者) 回答3 pandas-dedupe 是您的朋友。 您可以尝试执行以下操作: import pandas as pd from pandas_deudpe import dedupe_dataframe df = pd.DataFrame.from_dict({'bank':['bankA', 'bankA', 'bankB', 'bankX'],'email':['email1', 'email1', 'email2', 'email3'],'name':['jon', 'john', 'mark', 'pluto']}) dd = dedupe_dataframe(df, ['bank', 'name', 'email
  • 熊猫/ Python:如何串联两个没有重复的数据框?(Pandas/Python: How to concatenate two dataframes without duplicates?)
    问题 我想将两个数据框A,B连接到一个没有重复行的新数据框(如果B中的行已经存在于A中,则不要添加): 数据框A:数据框B: I II I II 0 1 2 5 6 1 3 1 3 1 新数据框: I II 0 1 2 1 3 1 2 5 6 我怎样才能做到这一点? 回答1 最简单的方法是只进行串联,然后删除重复项。 >>> df1 A B 0 1 2 1 3 1 >>> df2 A B 0 5 6 1 3 1 >>> pandas.concat([df1,df2]).drop_duplicates().reset_index(drop=True) A B 0 1 2 1 3 1 2 5 6 reset_index(drop=True)用于修复concat()和drop_duplicates()之后的索引。 没有它,您将拥有[0,1,0]而不是[0,1,2]的索引。 如果未立即重置该dataframe ,则可能会导致对该dataframe进行进一步操作的问题。 回答2 如果您在DataFrame A中已经有重复的行,然后连接并删除重复的行,将会从DataFrame A中删除您可能想要保留的行。 在这种情况下,您将需要创建一个具有累积计数的新列,然后删除重复项,这完全取决于您的用例,但这在时间序列数据中很常见。 这是一个例子: df_1 = pd.DataFrame([ {'date
  • 如何组合熊猫中的重复行?(How to combine duplicate rows in pandas?)
    问题 如何组合熊猫中的重复行,填充缺失值? 在下面的示例中,某些行在c1列中有缺失值,但c2列有重复项,可用作索引来查找和填充这些缺失值。 输入数据如下所示: c1 c2 id 0 10.0 a 1 NaN b 2 30.0 c 3 10.0 a 4 20.0 b 5 NaN c 所需的输出: c1 c2 0 10 a 1 20 b 2 30 c 但是如何做到这一点呢? 下面是生成示例数据的代码: import pandas as pd df = pd.DataFrame({ 'c1': [10, float('nan'), 30, 10, 20, float('nan')] 'c2': [100, 200, 300, 100, 200, 300], }) 回答1 我认为需要带有 drop_duplicates 的 sort_values: df = df.sort_values(['c1','c2']).drop_duplicates(['c2']) print (df) c1 c2 0 10.0 100 4 20.0 200 2 30.0 300 或者首先通过 dropna 删除带有NaN的行: df = df.dropna(subset=['c1']).drop_duplicates(['c2']) print (df) c1 c2 0 10.0 100 2 30.0 300
  • 找出python熊猫数据结构中的重复项(Find out which is the duplicate in a python panda data structure)
    问题 我有一个 csv 文件。 它看起来像这样; name,id, AAA,1111, BBB,2222, CCC,3333, DDD,2222, 我想找出列id是否有重复项。 如果是,请找出重复项。 在这种情况下,答案是2222 。 我有代码来确定是否存在重复项。 这里是; import pandas as pd csv_file = 'C:/test.csv' df = pd.read_csv(csv_file) df['id'].duplicated().any() 问题是如何找出重复的? 我正在使用 python 2.7 和熊猫。 回答1 我认为你可以使用重复的( keep被省略,因为keep='first'是默认值)。 或者,如果您需要列出值: print df['id'][df.duplicated(subset=['id'])] 3 2222 Name: id, dtype: int64 print df['id'][df.duplicated(subset=['id'])].tolist() [2222] 您可以检查重复: print df.duplicated(subset=['id'], keep='first') 0 False 1 False 2 False 3 True dtype: bool print df.duplicated(subset=['id
  • 熊猫concat产生ValueError:平面形状未对齐(Pandas concat yields ValueError: Plan shapes are not aligned)
    问题 在熊猫中,我试图连接一组数据帧,但出现此错误: ValueError: Plan shapes are not aligned 我对.concat()理解是,它将在列相同的地方连接,但对于找不到的列将使用NA填充。 这里似乎并非如此。 这是concat语句: dfs = [npo_jun_df, npo_jul_df,npo_may_df,npo_apr_df,npo_feb_df] alpha = pd.concat(dfs) 回答1 如果有帮助,我在尝试连接两个数据框时也会遇到此错误(截至撰写本文时,这是我可以在Google上找到的唯一与源代码无关的相关命中)。 我不知道这样的回答是否已经解决了OP的问题(因为他/她没有足够的岗位信息),但对我来说,这是造成当我试图concat数据帧df1与列['A', 'B', 'B', 'C'] (请参见重复的列标题?),数据df2 , df2 ['A', 'B'] 。 可以理解的是,重复导致大熊猫晃动。 将df1更改为['A', 'B', 'C'] (即删除重复的列之一),一切正常。 回答2 最近,我得到这个消息,也和我一样发现用户@jason和@ user3805082以上是我在几个几百dataframes的我尝试的有重复列concat ,各有数十神秘varnames的。 手动搜索重复项是不切实际的。 万一其他人有同样的问题
  • 如何在熊猫数据框中保留前两个重复项?(How to keep first two duplicates in a pandas dataframe?)
    问题 关于在数据框中查找重复项,以及使用特定列删除数据框中的重复项,我有一个问题。 这是我要完成的工作: 是否可以删除重复项但保留前两个? 这是我当前的数据框df的示例,并查看我在下面放置的方括号内的注释,以使您有所了解。 注意:如果'Roll'= 1,那么我想查看Date列,看看该列中是否还有第二个重复的Date ...保留这两个并删除其他任何日期。 Date Open High Low Close Roll Dupes 1 19780106 236.00 237.50 234.50 235.50 0 NaN 2 19780113 235.50 239.00 235.00 238.25 0 NaN 3 19780120 238.00 239.00 234.50 237.00 0 NaN 4 19780127 237.00 238.50 235.50 236.00 1 NaN (KEEP) 5 19780203 236.00 236.00 232.25 233.50 0 NaN (KEEP) 6 19780127 237.00 238.50 235.50 236.00 0 NaN (KEEP) 7 19780203 236.00 236.00 232.25 233.50 0 NaN (DELETE) 8 19780127 237.00 238.50 235.50 236.00 0
  • 使用 Pandas 将一个数据帧中的列添加到另一个具有不同列名的数据框中 [重复](Adding Column From One Dataframe To Another Having Different Column Names Using Pandas [duplicate])
    问题 这个问题在这里已经有了答案: 在不同的列名上合并两个不同的数据框 [重复] (3 个回答) 熊猫加入具有不同名称的列 [重复] (2 个答案) Pandas:在具有不同名称的字段上加入 DataFrames? (2 个回答) 如何在熊猫中连接两个具有不同列名的数据框? - 蟒蛇(3 个回答) 按列名加入 Pandas 数据框2 个回答 3年前关闭。 我有一个名为价格的数据框,包含两列:时间戳和收盘价。 内容如下: Timestamp Close 1/1/2017 0:00 966.6 1/1/2017 1:00 963.87 1/1/2017 2:00 963.97 1/1/2017 3:00 962.83 我有另一个名为output的数据框,其内容如下: created_at count 6/7/2018 19:00 1 6/7/2018 20:00 2 6/7/2018 21:00 3 6/7/2018 22:00 2 6/7/2018 23:00 1 我想要做的是将价格数据帧的收盘价附加到上面的输出数据帧以获得一个应该如下所示的数据帧: created_at count close 1/1/2017 0:00 5 966.6 1/1/2017 1:00 1 963.87 1/1/2017 2:00 1 963.97 1/1/2017 3:00 1 962.83
  • 熊猫加入具有不同名称的列[重复](Pandas join on columns with different names [duplicate])
    问题 这个问题在这里已经有了答案: 熊猫合并 101 (5 个回答) 2年前关闭。 我有两个不同的数据框,我想对其执行一些 sql 操作。 不幸的是,就像我正在处理的数据一样,拼写通常不同。 请参阅下面的示例,我认为语法看起来像 userid 属于 df1 而 username 属于 df2。 有人帮我吗? # not working - I assume some syntax issue? pd.merge(df1, df2, on = [['userid'=='username', 'column1']], how = 'left') 回答1 当名称不同时,使用xxx_on参数代替on= : pd.merge(df1, df2, left_on= ['userid', 'column1'], right_on= ['username', 'column1'], how = 'left') 回答2 另一种方法是使用join将右侧DataFrame的索引设置为列['username', 'column1'] : df1.join(df2.set_index(['username', 'column1']), on=['userid', 'column1'], how='left')
  • 从熊猫的数据框中的所有列输出数据[重复](Output data from all columns in a dataframe in pandas [duplicate])
    问题 这个问题已经在这里有了答案: 如何扩展输出显示以查看pandas DataFrame的更多列? (20个答案) 2年前关闭。 我有一个名为params.csv的csv文件。 我打开ipython qtconsole并使用以下ipython qtconsole创建了一个熊猫dataframe ipython qtconsole : import pandas paramdata = pandas.read_csv('params.csv', names=paramnames) 其中, paramnames是字符串对象的python列表。 的实施例paramnames (实际列表的长度为22): paramnames = ["id", "fc", "mc", "markup", "asplevel", "aspreview", "reviewpd"] 在ipython提示符下,如果我键入paramdata并按Enter键,那么我不会获得带有列和值的数据paramdata ,如Pandas网站上的示例所示。 相反,我获得有关数据框的信息。 我得到: In[35]: paramdata Out[35]: <class 'pandas.core.frame.DataFrame'> Int64Index: 59 entries, 0 to 58 Data columns: id 59
  • 检查熊猫数据框中是否有多个子字符串[重复](Check if multiple substrings are in pandas dataframe [duplicate])
    问题 这个问题在这里已经有了答案: Pandas 对多个子串进行串联过滤(3 个回答) 2年前关闭。 我有一个 Pandas 数据框,我想检查某个列的子字符串。 目前我有 30 行这样的代码: df['NAME'].str.upper().str.contains('LIMITED')) | (df['NAME'].str.upper().str.contains('INC')) | (df['NAME'].str.upper().str.contains('CORP')) 它们都与or条件相关联,如果其中任何一个为真,则名称是公司的名称而不是个人的名称。 但对我来说,这似乎不是很优雅。 有没有办法检查熊猫字符串列中的“此列中的字符串是否包含以下列表中的任何子字符串” ['LIMITED', 'INC', 'CORP'] 。 我找到了 pandas.DataFrame.isin 函数,但这仅适用于整个字符串,不适用于我的子字符串。 回答1 您可以使用正则表达式,其中“|” 是正则表达式中的“或”: l = ['LIMITED','INC','CORP'] regstr = '|'.join(l) df['NAME'].str.upper().str.contains(regstr) MVCE: In [1]: import pandas as pd In [2]: df = pd
  • 如何根据熊猫另一列中的唯一值创建升序值列(How to create column of ascending values based on unique values in another column in pandas)
    问题 我有一个数据集,其中每一行都是一个样本,一列(名称“Sample_ID”)命名每个样本(下面的 df1)。 一些样本重复多次(即“Sample_ID”具有相同的值)。 我想根据从表中第一行到最后一行的简单升序模式(例如 SAMP001、SAMP002、SAMP003 等)为每个样本生成一个具有不同名称的新列(我将其称为“Sample_code”) . 但是具有相同 Sample_ID 的行也需要具有相同的 Sample_code 值(所以我不能简单地为新列生成一组升序的样本名称)。 在下面的示例数据中,df1 代表我的起始数据。 df2 是我想要的结果:Sample_code 列值随着每行向下而上升,但对于 Sample_ID 重复的行具有相同的值。 我很困惑从哪里开始,所以任何帮助将不胜感激,谢谢。 import numpy as np import pandas as pd # df1 data1 = {'Sample_ID': ['123123','123456','123123','123789','456789', '123654'], 'Variable_A': [15,12,7,19,3,12], 'Variable_B':["blue","red","red","blue","blue", "red"]} df1 = pd.DataFrame(data1) #
  • 如何使用熊猫选择重复的行?(How to select duplicate rows with pandas?)
    问题 我有一个这样的数据框: import pandas as pd dic = {'A':[100,200,250,300], 'B':['ci','ci','po','pa'], 'C':['s','t','p','w']} df = pd.DataFrame(dic) 我的目标是将行分成 2 个数据帧: df1 = 包含沿B列不重复值的所有行(非重复行)。 df2 = 只包含重复自己的行。 结果应如下所示: df1 = A B C df2 = A B C 0 250 po p 0 100 ci s 1 300 pa w 1 250 ci t 笔记: 数据框通常可能非常大,并且有许多值在 B 列中重复,因此答案应尽可能通用如果没有重复,df2 应该是空的! 所有结果都应该在 df1 中 回答1 您可以使用 Series.duplicated 和参数keep=False为所有重复项创建掩码,然后使用布尔索引, ~反转mask : mask = df.B.duplicated(keep=False) print (mask) 0 True 1 True 2 False 3 False Name: B, dtype: bool print (df[mask]) A B C 0 100 ci s 1 200 ci t print (df[~mask]) A B C 2 250 po p
  • 重命名没有列名的熊猫数据框的列[重复](Renaming columns of a pandas dataframe without column names [duplicate])
    问题 这个问题在这里已经有了答案: 重命名 Pandas 中的列名(32 个回答) 4年前关闭。 我试图在 dataframe.from_dict 操作之后命名我的新数据帧的列。 只需使用 pandas.dataframe.from_dict 函数: df = pd.DataFrame.from_dict(my_dict,orient='index') 产生没有列标题的数据框。 data=pd.DataFrame.from_dict(my_dict,orient='index).rename(columns = {'name','number'}) 这不会产生任何错误:TypeError: 'set' object is not callable。 有人有线索吗? 回答1 如果您希望索引作为字典中的键,则不需要重命名它。 df = pd.DataFrame.from_dict(dicts, orient = 'index') #index is name df.columns = (['number']) #non-index column is number df.index.name = 'name' 或者,您可以创建一个新列,而不是更改索引名称: df = df.reset_index() #named column becomes index, index becomes
  • 熊猫的DataFrame-重命名多个相同名称的列(Panda's DataFrame - renaming multiple identically named columns)
    问题 我在df中有几个命名相同的列。 我需要重命名它们,但问题是df.rename方法以相同的方式重命名了它们。 如何将下面的等等重命名为blah1,blah4,blah5? df = pd.DataFrame(np.arange(2*5).reshape(2,5)) df.columns = ['blah','blah2','blah3','blah','blah'] df # blah blah2 blah3 blah blah # 0 0 1 2 3 4 # 1 5 6 7 8 9 使用df.rename方法时,将发生以下情况: df.rename(columns={'blah':'blah1'}) # blah1 blah2 blah3 blah1 blah1 # 0 0 1 2 3 4 # 1 5 6 7 8 9 回答1 从Pandas 0.19.0开始pd.read_csv()改进了对重复列名的支持 因此,我们可以尝试使用内部方法: In [137]: pd.io.parsers.ParserBase({'names':df.columns})._maybe_dedup_names(df.columns) Out[137]: ['blah', 'blah2', 'blah3', 'blah.1', 'blah.2'] 这是“魔术”功能: def _maybe_dedup
  • 熊猫数据透视表到数据框[重复](pandas pivot table to data frame [duplicate])
    问题 这个问题在这里已经有了答案: 如何旋转数据框? (3 个回答) 2年前关闭。 我有一个如下所示的数据框 (df): +---------+-------+------------+----------+ | subject | pills | date | strength | +---------+-------+------------+----------+ | 1 | 4 | 10/10/2012 | 250 | | 1 | 4 | 10/11/2012 | 250 | | 1 | 2 | 10/12/2012 | 500 | | 2 | 1 | 1/6/2014 | 1000 | | 2 | 1 | 1/7/2014 | 250 | | 2 | 1 | 1/7/2014 | 500 | | 2 | 3 | 1/8/2014 | 250 | +---------+-------+------------+----------+ 当我在 R 中使用 reshape 时,我得到了我想要的: reshape(df, idvar = c("subject","date"), timevar = 'strength', direction = "wide") +---------+------------+--------------+--------------+------
  • 在 Pandas DataFrame 中查找重复行的索引(Find indices of duplicate rows in pandas DataFrame)
    问题 在不迭代单个行的情况下,在给定 DataFrame 中查找相同行的索引的 Pandas 方法是什么? 虽然可以找到所有独特的行unique = df[df.duplicated()] ,然后遍历唯一条目与unique.iterrows()并帮助提取等项目的指标pd.where()有什么是熊猫的做法吗? 示例:给定具有以下结构的 DataFrame: | param_a | param_b | param_c 1 | 0 | 0 | 0 2 | 0 | 2 | 1 3 | 2 | 1 | 1 4 | 0 | 2 | 1 5 | 2 | 1 | 1 6 | 0 | 0 | 0 输出: [(1, 6), (2, 4), (3, 5)] 回答1 对所有重复行使用与keep=False重复的参数,然后按所有列groupby并将索引值转换为元组,最后将输出Series转换为list : df = df[df.duplicated(keep=False)] df = df.groupby(list(df)).apply(lambda x: tuple(x.index)).tolist() print (df) [(1, 6), (2, 4), (3, 5)] 如果您还想查看重复值: df1 = (df.groupby(df.columns.tolist()) .apply(lambda x
  • 为熊猫设置差异(set difference for pandas)
    问题 一个简单的熊猫问题: 是否有drop_duplicates()功能来删除复制中涉及的每一行? 以下是一个等效的问题:熊猫的数据帧是否有固定的差异? 例如: In [5]: df1 = pd.DataFrame({'col1':[1,2,3], 'col2':[2,3,4]}) In [6]: df2 = pd.DataFrame({'col1':[4,2,5], 'col2':[6,3,5]}) In [7]: df1 Out[7]: col1 col2 0 1 2 1 2 3 2 3 4 In [8]: df2 Out[8]: col1 col2 0 4 6 1 2 3 2 5 5 所以也许像df2.set_diff(df1)这样的东西会产生这种情况: col1 col2 0 4 6 2 5 5 但是,我不想依赖索引,因为在我的情况下,我必须处理具有不同索引的数据框。 顺便说一句,我最初考虑了对当前drop_duplicates()方法的扩展,但是现在我意识到,使用集合论属性的第二种方法通常更有用。 两种方法都可以解决我当前的问题。 谢谢! 回答1 from pandas import DataFrame df1 = DataFrame({'col1':[1,2,3], 'col2':[2,3,4]}) df2 = DataFrame({'col1':[4,2,5],