大熊猫在大熊猫的两列之间找到一个共同值的索引

时间:2019-03-10 12:28:26

标签: python pandas

我有一个数据框,看起来像这样: df1

Date and time   Price1  PrePrice
17.9.2018 9:47  1200.6  1204.8
17.9.2018 9:47  1200.6  1203.8
17.9.2018 9:47  1200.6  1202.1
17.9.2018 9:47  1200.6  1204.8
17.9.2018 9:47  1200.6  1204.8
17.9.2018 9:47  1200.6  1204.8
17.9.2018 9:47  1202.1  1204.8
17.9.2018 23:30 1200.7  1204.8
17.9.2018 23:31 1200.7  1204.8
17.9.2018 23:32 1200.6  1204.8
17.9.2018 23:33 1200.6  1204.8
17.9.2018 23:36 1200.7  1204.8
17.9.2018 23:47 1200.7  1204.8
17.9.2018 23:48 1200.6  1202.1
17.9.2018 23:50 1202.1  1200.9
17.9.2018 23:52 1203.8  1200.8
17.9.2018 23:55 1204.8  1200.7

我想获得两列Price1,PrePrice之间的公共值 像这样:(1204.8; 17.9.2018 9:47; 17.9.2018 23:55) 它尝试了这种方法,但是非常慢:

c = [(i, j)  for i, x in enumerate(a) for j, y in enumerate(b) if x == y]

2 个答案:

答案 0 :(得分:2)

如果要在同一行上放置相等的地方,那就是香草熊猫:

table = pd.read_csv(files,
                    header=None,
                    delimiter="\t",
                    usecols=range(3),
                    names=['wave', 'shape', 'freq'])

(您的示例中没有。)

如果要使用所有共享值,可以使用设置符号:

df1[df1.Price1 == df1.PrePrice]

鉴于这些时间,您可以使用c = set(df1.Price1).intersection(df1.PrePrice) print(c) > {1200.7, 1202.1, 1203.8, 1204.8} 过滤Date and Time

Price1

答案 1 :(得分:0)

df = pd.read_csv(“ C:/Users/Adil/Desktop/test.csv”,delimiter =';',decimal =',',parse_dates = [“ Date and time”],index_col =“ Date和时间”) 上面的代码终于可以正常工作了。 但仍远未达到预期的结果:(1204.8; 17.9.2018 9:47; 17.9.2018 23:55)