簡體   English   中英

熊貓:在數據框中重新分配值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM