Python 将列值指定给数据帧中的唯一行
我有福勒。数据帧:Python 将列值指定给数据帧中的唯一行,python,pandas,Python,Pandas,我有福勒。数据帧: AA AB AC AD Col_1 Col_2 Col_3 Northeast Argentina Northeast Argentina South America Corrientes Misiones Northern Argentina Northern Argentina South America
AA AB AC AD Col_1 Col_2 Col_3
Northeast Argentina Northeast Argentina South America Corrientes Misiones
Northern Argentina Northern Argentina South America Chaco Formosa Santiago Del
我想将其转换为:
AA AB AC AD Col
Northeast Argentina Northeast Argentina South America Corrientes
Northeast Argentina Northeast Argentina South America Misiones
Northern Argentina Northern Argentina South America Chaco
Northern Argentina Northern Argentina South America Formosa
Northern Argentina Northern Argentina South America Santiago Del
i、 e.我希望保留前4列,但将剩余的每列值分配到单独的行中。有没有一种不使用for循环的方法可以实现这一点?您可以尝试以下方法:
df = df.melt(id_vars=['AA','AB','AC','AD'])
df.dropna(inplace=True)
df.drop(columns='variable', inplace=True)
df = df.sort_values('AA').reset_index(drop=True)
df.rename(columns={'value':'Col'}, inplace=True)
AA AB AC AD Col
0 Northeast Argentina Northeast Argentina South America Corrientes
1 Northeast Argentina Northeast Argentina South America Misiones
2 Northern Argentina Northern Argentina South America Chaco
3 Northern Argentina Northern Argentina South America Formosa
4 Northern Argentina Northern Argentina South America Santiago Del
尝试使用:
df['Col'] = df[['Col_1', 'Col_2', 'Col_3']].values.tolist()
df = df.set_index(df.columns.drop('Col').tolist())['Col'].apply(pd.Series).stack().reset_index().rename(columns={0: 'Col'}).drop(['level_7', 'Col_1', 'Col_2', 'Col_3'], axis=1)
print(df)
输出:
AA AB AC AD Col
0 Northeast Argentina Northeast Argentina South America Corrientes
1 Northeast Argentina Northeast Argentina South America Misiones
2 Northern Argentina Northern Argentina South America Chaco
3 Northern Argentina Northern Argentina South America Formosa
4 Northern Argentina Northern Argentina South America Santiago Del
您可以通过不使用
inplace=True
来改进答案-勾选“否”,我不是dev,但更多的时候会看到这个观点并同意它。我认为这是更多的建议,检查也谢谢,这对我有帮助。我感谢你花时间帮助我成为更好的熊猫专家。