我一直在努力嘗試使用由 n 個資料框組成的字典“d”,并將其應用于它們:
idf = idf.iloc[idf.index.repeat(idf.iloc[:,0])]
這是一個函式,用于重復每個資料幀的第 0 列的索引次數。像這樣的東西:
BEFORE: AFTER:
Index Index
1290 2 1290 2
1320 3 1290 2
1400 4 1320 3
1320 3
1320 3
1400 4
1400 4
1400 4
1400 4
因此,字典“d”的資料框看起來像之前的列。我嘗試以這種方式應用該功能:
for idf in d:
d = idf.iloc[idf.index.repeat(idf.iloc[:,0])]
當我手動選擇列名時,我能夠這樣做,但是這些資料框具有不同的列名(故意)。但是我不能應用它,因為 .iloc[] 不適用于字串(我發現很奇怪,因為它沒有選擇字典的值,而是使用字典的字串)。
如果我想取回應用了函式的字典“d”,我該如何解決這個問題?
謝謝!
編輯:
- 字典“d”中的一個資料框的示例圖片,請記住第一列 [0] 的名稱在每個資料框中是不同的(并且不應因資料管理而更改):

- 我已經知道如何重復 n 次,我的問題是將它應用到帶有資料框的字典中。
uj5u.com熱心網友回復:
這是在做你需要的嗎?
import pandas as pd
df1 = pd.DataFrame({"a":[2, 3, 4, 3], "col1":[1, 2, 3, 4]})
df1.set_index("a", inplace=True)
df2 = pd.DataFrame({"b":[1, 2, 4], "col2":[3, 2, 1]})
df2.set_index("b", inplace=True)
d = {"df1": df1, "df2": df2}
for idf,this_df in d.items():
d[idf] = this_df.loc[this_df.index.repeat(this_df.iloc[:,0])]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/383794.html
下一篇:將Lambda函式應用于多列
