我有2列数据需要比较。如果第1列中的值匹配,则需要添加其对应的第2列中的值

时间:2018-08-03 16:49:11

标签: python

所以我有一个很大的数据集,看起来像这样。

1       1.05
1       0.95
1       1.00
2       1.02
2       1.03
3       .97

如果第一列中的值匹配,那么我需要添加其对应的第二列值。在所有1都匹配的情况下,我将加(1.05 +.95 +1)= 3。 然后2s匹配,所以它将变为(1.02 + 1.03)= 2.05。而且3很好。我需要编写代码来比较数字的帮助,如果第1列中的数字与其上方或下方的数字匹配,请添加其对应的第2列的值。

完成所有操作后,我需要它来绘制新找到的值(在这种情况下为3、2.05和.97)。

我已经有

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt(fname='Project2-3.dat')
df = pd.DataFrame(data=data)

energy = df[6]*1000

plt.hist(energy, bins=250)
plt.show()

但是我对Python不够了解,无法添加if命令。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我建议将您的数据放入Pandas DataFrame中。除其他许多功能外,这将允许访问groupby功能。然后,您可以将具有相同索引值的行分组在一起(第一列)。然后,在每个组上,您只需计算sum

这里是一个例子:

In [1]: import pandas as pd, matplotlib.pyplot as plt

In [2]: index_values = [1, 1, 1, 2, 2, 3]

In [3]: values = [1.05, 0.95, 1.00, 1.02, 1.03, 0.97]

In [4]: df = pd.DataFrame(values, index=index_values)

In [5]: df
Out[5]: 
      0
1  1.05
1  0.95
1  1.00
2  1.02
2  1.03
3  0.97

In [6]: grouped = df.groupby(by=df.index).sum()

In [7]: grouped.plot()
Out[7]: <matplotlib.axes._subplots.AxesSubplot at 0x7fcb2a35db38>

In [8]: plt.show()

然后这给了我

barplot of summed groups