我有像圖片一樣的資料框:

我有索引串列:
index = ["A", "B","C"]
我希望該索引每 3 行重復一次,如圖所示:

有沒有一種有效的方法來做到這一點?謝謝!
uj5u.com熱心網友回復:
你可以使用這個技巧:
df.index = (df.index % 3 65).map(chr)
print(df)
# Output
0
A 0.410769
B 0.588686
C 0.173944
A 0.911229
B 0.424803
C 0.671895
A 0.665640
B 0.071965
C 0.050997
A 0.965870
B 0.119070
C 0.230928
在 ASCII 中,“A”的值為 65,“B”的值為 66,“C”的值為 67,依此類推……
如果要使用索引,請使用:
# Enhanced by @mozway
df.index = (df.index % len(index)).map(dict(enumerate(index)))
print(df)
# Output
0
A 0.410769
B 0.588686
C 0.173944
A 0.911229
B 0.424803
C 0.671895
A 0.665640
B 0.071965
C 0.050997
A 0.965870
B 0.119070
C 0.230928
使用此解決方案,索引串列或資料框的長度無關緊要。
uj5u.com熱心網友回復:
您可以將串列擴展到所需的長度,然后使用pandas.Dataframe.reindex:
https ://pandas.pydata.org/docs/reference/api/pandas.DataFrame.reindex.html
uj5u.com熱心網友回復:
由于您沒有提供問題的可重現示例,因此我生成了一個隨機串列并將它們分配給資料框,但解決方案的方法是相同的。
如果您確定第一列 (12) 中的元素數量,您可以嘗試:
import random
import pandas as pd
values = random.sample(range(6000, 8000), 12) # Random list, you won't need this line
df = pd.DataFrame({"values": values})
alphabets = ["A", "B", "C"] * 4
df["new_column"] = alphabets
df
如果沒有,您可以按照以下代碼進行操作:
import random
import pandas as pd
values = random.sample(range(6000, 8000), 12) # Random list, you won't need this line
df = pd.DataFrame({"values": values})
alphabets = ["A", "B", "C"]
newColumn = []
for index, row in df.iterrows():
newColumn.append(alphabets[index%3])
df["new_column"] = newColumn
df
無論哪種情況,您都會得到以下結果:
| 價值觀 | 新列 | |
|---|---|---|
| 0 | 7384 | 一種 |
| 1 | 7014 | 乙 |
| 2 | 6997 | C |
| 3 | 6266 | 一種 |
| 4 | 6552 | 乙 |
| 5 | 6568 | C |
| 6 | 7907 | 一種 |
| 7 | 6209 | 乙 |
| 8 | 7475 | C |
| 9 | 7817 | 一種 |
| 10 | 6293 | 乙 |
| 11 | 6218 | C |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435571.html
上一篇:用isin切片python資料幀
