我有4列的DataFrame,想合并在一个新的DataFrame的前3列。
数据是相同的,顺序是无关的,任何重复必须保留。
import pandas as pd
data = [['tom', 'nick', 'john', 10], ['bob', 'jane', 'nick', 15]]
df = pd.DataFrame(data, columns = ['col1', 'col2', 'col3','col4'])
所需DataFrame
+-----+-----+
|col_a|col_b|
+-----+-----+
|tom |10 |
|nick |10 |
|john |10 |
|bob |15 |
|jane |15 |
|nick |15 |
+-----+-----+
我该怎么做?
下面是在numpy
的帮助下合并前三列的一种方法:
a = df.values
pd.DataFrame({'col_a': np.ravel(a[:, :3]), 'col_b': np.repeat(a[:, 3], 3)})
col_a col_b
0 tom 10
1 nick 10
2 john 10
3 bob 15
4 jane 15
5 nick 15