所以我有一个很大的数据集,看起来像这样。
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命令。任何帮助将不胜感激。
答案 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()
然后这给了我