use*_*356 3 python series dataframe pandas
我有一个大约 1M 行和大约 20 列的数据框。我希望将这些列合并为一列;在同一唯一标识符列下。
为了说明这一点,这是原始数据:
ID Column 2 Column 3
0 1001 B A
1 1002 C D
2 1003 E E
3 1004 G H
Run Code Online (Sandbox Code Playgroud)
期望的结果:
ID Merged
0 1001 B
1 1001 A
2 1002 C
3 1002 D
4 1003 E
5 1003 E
6 1004 G
7 1004 H
Run Code Online (Sandbox Code Playgroud)
由于我想要合并大约 20 列;我需要通过循环合并它们。我使用了下面的代码,但总是出现内存错误。
master = pd.DataFrame()
for col in original_df: # original_df is the dataframe combining the 20 columns
if col != 'ID':
temp = pd.DataFrame()
temp['ID'] = original_df['ID']
temp['Merged'] = original_df[col]
master = master.append([temp])
Run Code Online (Sandbox Code Playgroud)
你可以使用df.melt像这样的东西:
newdf = (df.melt(id_vars='ID', value_vars = ['Column 2', 'Column 3'],
value_name='Merged')
.drop('variable', axis=1)
.sort_values('ID'))
>>> newdf
ID Merged
0 1001 B
4 1001 A
1 1002 C
5 1002 D
2 1003 E
6 1003 E
3 1004 G
7 1004 H
Run Code Online (Sandbox Code Playgroud)