![](/img/trans.png)
[英]Pandas Add value to Dataframe column based on index and if value exists then append
[英]Add different prefix to index by column value in pandas dataframe
我有一個 dataframe,帶有重復索引,我正在嘗試根據另一個 dataframe 的行名重新索引。但是,由於重復索引問題,它告訴我當我執行df2 = df2.reindex(df.index)
時cannot reindex on an axis with duplicate labels
df2 = df2.reindex(df.index)
。
下面是我的 df2 的樣子
指數 | 專欄 1 | 專欄2 |
---|---|---|
一種 | 樣本_a | 1個 |
乙 | 樣本_a | 3個 |
乙 | 樣品_b | 2個 |
C | 樣品_c | 3個 |
所以我想通過 column1 中的值向它添加前綴來使我的索引唯一。 如果column1是sample_a,我想把index做成a_index; 如果 column1 是 sample_b,我想將索引更改為 b_index,如下所示更改我的 df2:
指數 | 專欄 1 | 專欄2 |
---|---|---|
a_A | 樣本_a | 1個 |
a_B | 樣本_a | 3個 |
b_B | 樣品_b | 2個 |
c_C | 樣品_c | 3個 |
我確實看到了向索引添加前綴的方法,但我不確定如何有選擇地添加不同的前綴?
謝謝!
如果你的另一個 DataFrame 也有“索引”和“column1”,為什么不將兩者都用作索引呢?
或者,您可以使用str.extract
刪除重復的“索引”以從下划線之后的“column1”獲取 id:
df['index'] = (df['column1']
.str.extract('_([^_]+)$', expand=False)
.add('_'+df['index'])
)
更新 dataframe:
index column1 column2
0 a_A sample_a 1
1 a_B sample_a 3
2 b_B sample_b 2
3 c_C sample_c 3
正則表達式:
_ # match underscore
([^_]+) # capture non-underscore characters
$ # match end of line
你可以使用str.slice
df2['index'] = df2['column1'].str.slice(-1) + "_" + df2['index']
index column1 column2
0 a_A sample_a 1
1 a_B sample_a 3
2 b_B sample_b 2
3 c_C sample_c 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.