计算具有相同 h、k 和 l 的等效行的平均强度
Calculate mean Intensity for equivalent rows having same h,k,and l
enter image description here
我想计算具有等效 h、k、l 的那些行的平均强度。等效的意思是 h=+/- h 和 k==/-k 和 l=+/- l 。需要满足这三个条件,那么这些行是等价的,我需要在新列中获取它们对应强度的平均值。例如,前 2 行阴影行是等效的,因此计算 average= (31.26 + 42.19)/2 并在每行旁边的新列中键入它。
尝试:
out = df.groupby([df['h'].abs(),df['k'].abs(),df['l'].abs()])['Intensity'].transform('mean')
按 ['h','k','l']
分组并求出每组的平均值 Intensity
并将组平均值应用于每一行。
按 +/-h、+/-k 和 +/-l 创建组并计算平均强度:
grps = [df['h'].abs(), df['k'].abs(), df['l'].abs()]
df['Mean Intensity'] = df.groupby(grps)['Intensity'].transform('mean')
print(df)
# Output:
h k l Intensity Mean Intensity
0 1 -1 -1 138 152.00
1 0 1 -1 186 168.25
2 1 1 1 124 152.00
3 0 1 1 159 168.25
4 0 1 0 176 176.00
5 1 -1 -1 194 152.00
6 0 1 -1 199 168.25
7 0 0 -1 172 172.00
8 0 -1 -1 129 168.25
9 1 0 -1 134 134.00
设置:
data = {'h': [1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
'k': [-1, 1, 1, 1, 1, -1, 1, 0, -1, 0],
'l': [-1, -1, 1, 1, 0, -1, -1, -1, -1, -1],
'Intensity': [138, 186, 124, 159, 176, 194, 199, 172, 129, 134]}
df = pd.DataFrame(data)
print(df)
# Output:
h k l Intensity
0 1 -1 -1 138
1 0 1 -1 186
2 1 1 1 124
3 0 1 1 159
4 0 1 0 176
5 1 -1 -1 194
6 0 1 -1 199
7 0 0 -1 172
8 0 -1 -1 129
9 1 0 -1 134
enter image description here
我想计算具有等效 h、k、l 的那些行的平均强度。等效的意思是 h=+/- h 和 k==/-k 和 l=+/- l 。需要满足这三个条件,那么这些行是等价的,我需要在新列中获取它们对应强度的平均值。例如,前 2 行阴影行是等效的,因此计算 average= (31.26 + 42.19)/2 并在每行旁边的新列中键入它。
尝试:
out = df.groupby([df['h'].abs(),df['k'].abs(),df['l'].abs()])['Intensity'].transform('mean')
按 ['h','k','l']
分组并求出每组的平均值 Intensity
并将组平均值应用于每一行。
按 +/-h、+/-k 和 +/-l 创建组并计算平均强度:
grps = [df['h'].abs(), df['k'].abs(), df['l'].abs()]
df['Mean Intensity'] = df.groupby(grps)['Intensity'].transform('mean')
print(df)
# Output:
h k l Intensity Mean Intensity
0 1 -1 -1 138 152.00
1 0 1 -1 186 168.25
2 1 1 1 124 152.00
3 0 1 1 159 168.25
4 0 1 0 176 176.00
5 1 -1 -1 194 152.00
6 0 1 -1 199 168.25
7 0 0 -1 172 172.00
8 0 -1 -1 129 168.25
9 1 0 -1 134 134.00
设置:
data = {'h': [1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
'k': [-1, 1, 1, 1, 1, -1, 1, 0, -1, 0],
'l': [-1, -1, 1, 1, 0, -1, -1, -1, -1, -1],
'Intensity': [138, 186, 124, 159, 176, 194, 199, 172, 129, 134]}
df = pd.DataFrame(data)
print(df)
# Output:
h k l Intensity
0 1 -1 -1 138
1 0 1 -1 186
2 1 1 1 124
3 0 1 1 159
4 0 1 0 176
5 1 -1 -1 194
6 0 1 -1 199
7 0 0 -1 172
8 0 -1 -1 129
9 1 0 -1 134