[英]Dropping column gives unexpected result
我有一个数据框列表
df1 = {'col1': ['a', 'a', 'b', 'c', 'c', 'd'], '2020': [3, 4, 3, 8, 4, 5]}
df2 = {'col1': ['a', 'a', 'b', 'c', 'c', 'd'], '2021': [30, 40, 30, 80, 40, 50]}
df3 = {'col1': ['a', 'a', 'b', 'c', 'c', 'd'], '2022': [31, 41, 31, 81, 41, 51]}
listOfDf = [df1, df2, df3]
然后我并排添加它们
sideBySideDataframe = pd.concat(listOfDf , axis=1)
这给了我这个
2020 col1 2021 col1 2022 col1
0 3 'a' 30 'a' 31 'a'
1 4 'a' 40 'a' 41 'a'
2 3 'b' 30 'b' 31 'b'
3 8 'c' 80 'c' 81 'c'
...
现在,我只想保留col1
一次。 所以我尝试按索引删除col1
sideBySideDataframe = sideBySideDataframe.drop(sideBySideDataframe.columns[[1, 3]],axis = 1)
但是,这删除了我所有col1
列。 我试过了
sideBySideDataframe = sideBySideDataframe.drop(sideBySideDataframe.columns[[1]],axis = 1)
具有相同的效果。 但是,当我使用
sideBySideDataframe = sideBySideDataframe.set_index('col1')
我明白了
2020 2021 2022
col1
('a', 'a', 'a') ...
('a', 'a', 'a')
('b', 'b', 'b')
('c', 'c', 'c')
我的 output 应该是
2020 2021 2022
col1
'a' ...
'a'
'b'
'c'
Sooo,我不确定为什么pandas
会删除所有col1
,即使我只通过index
引用col1
。 有没有办法在执行pd.concat(listOfDf, axis=1)
时只保留一个重复的列名,或者我将如何设置索引,以便它不会添加名称适合col1
的每一列的所有值。
我会说你将col1
设置为索引,然后 concat:
sideBySideDataframe = pd.concat([d.set_index('col1') for d in listOfDf], axis=1)
Output:
2020 2021 2022
col1
a 3 30 31
a 4 40 41
b 3 30 31
c 8 80 81
c 4 40 41
d 5 50 51
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.