[英]Pandas: Reassigning values in dataframe
假设我在数据帧的许多其他列中有两列,ID1和ID2。
ID1 | ID2 | etc.
123 | 345
876 | 114
etc.
我需要重新排列ID1和ID2中的值,使得ID1始终包含最小的整数值。 在这种情况下,应该切换第2行,使得数据框看起来像这样:
ID1 | ID2
123 | 345
114 | 876
我尝试了以下,找到ID2 <ID1的实例,但我不知道在这种情况下如何分配值。
df.loc[df.ID2 < df.ID1, ['ID1','ID2']] = df.loc[df.ID2 < df.ID1, ['ID2','ID1']]
我需要这样做才能将此数据帧与ID1和ID2上的另一个数据帧合并,其中值可能不会以相同的方式排列。
有什么建议?
那是你要的吗?
In [279]: df
Out[279]:
ID1 ID2 ID3
0 123 345 100
1 876 114 200
2 111 222 300
In [280]: df[['ID1','ID2']] = df[['ID1','ID2']].apply(np.sort, axis=1)
In [281]: df
Out[281]:
ID1 ID2 ID3
0 123 345 100
1 114 876 200
2 111 222 300
我想更快的方法是:
df2 = df.copy()
mask = df.ID1 > df.ID2
df2.ix[mask, 'ID1'] = df.ix[mask, 'ID2']
df2.ix[mask, 'ID2'] = df.ix[mask, 'ID1']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.