例如,我有一个csv表:
Name, Val1, Val2, Val3, Constant
a, 0.1, 0.6, 1.1, 0.21
b, 0.2, 0.7, 1.2, 0.22
c, 0.3, 0.8, 1.3, 0.23
d, 0.4, 0.9, 1.4, 0.24
e, 0.5, 1.0, 1.5, 0.25
我想将第2,3和4列组合成一个新列(假设称为Val5),同时重复第1列和第5列中的值。这是输出的外观:
Name, Val5, Constant
a, 0.1, 0.21
b, 0.2, 0.22
c, 0.3, 0.23
d, 0.4, 0.24
e, 0.5, 0.25
a, 0.6, 0.21
b, 0.7, 0.22
c, 0.8, 0.23
d, 0.9, 0.24
e, 1.0, 0.25
a, 1.1, 0.21
b, 1.2, 0.22
c, 1.3, 0.23
d, 1.4, 0.24
e, 1.5, 0.25
答案 0 :(得分:1)
创建val5:
df['val5'] = #Whatever you want it to be
删除val1-3:
del df['val1']
del df['val2']
del df['val3']
答案 1 :(得分:0)
一种方法是pandas.melt
(我想在您的数据中有一个Name
列是索引,所以我在融化之前将其重置):
melted_df = df.reset_index().melt(
['Constant', 'Name'], ['Val1', 'Val2', 'Val3'], value_name='val5'
)
melted_df
Out:
Constant Name variable val5
0 0.21 a Val1 0.1
1 0.22 b Val1 0.2
2 0.23 c Val1 0.3
3 0.24 d Val1 0.4
4 0.25 e Val1 0.5
5 0.21 a Val2 0.6
6 0.22 b Val2 0.7
7 0.23 c Val2 0.8
8 0.24 d Val2 0.9
9 0.25 e Val2 1.0
10 0.21 a Val3 1.1
11 0.22 b Val3 1.2
12 0.23 c Val3 1.3
13 0.24 d Val3 1.4
14 0.25 e Val3 1.5
因此,只需删除不必要的列(variable
)并设置正确的索引列即可:
df = melted_df.set_index('Name')[['val5', 'Constant']]
df
Out:
val5 Constant
Name
a 0.1 0.21
b 0.2 0.22
c 0.3 0.23
d 0.4 0.24
e 0.5 0.25
a 0.6 0.21
b 0.7 0.22
c 0.8 0.23
d 0.9 0.24
e 1.0 0.25
a 1.1 0.21
b 1.2 0.22
c 1.3 0.23
d 1.4 0.24
e 1.5 0.25
希望有帮助