【发布时间】:2017-02-12 16:18:14
【问题描述】:
我有一个带有以下标头的数据框:
id, type1, ..., type10, location1, ..., location10
我想将其转换如下:
id, type, location
我设法使用嵌入式 for 循环来做到这一点,但它非常慢:
new_format_columns = ['ID', 'type', 'location']
new_format_dataframe = pd.DataFrame(columns=new_format_columns)
print(data.head())
new_index = 0
for index, row in data.iterrows():
ID = row["ID"]
for i in range(1,11):
if row["type"+str(i)] == np.nan:
continue
else:
new_row = pd.Series([ID, row["type"+str(i)], row["location"+str(i)]])
new_format_dataframe.loc[new_index] = new_row.values
new_index += 1
对使用原生 pandas 功能的改进有何建议?
【问题讨论】:
-
你的数据集有多大?
-
@MMF 现在几 GB
标签: python pandas explode reshape melt