我有幾個從get_topic()函式生成的串列。那是,
list1 = get_topic(1)
list2 = get_topic(2)
and another dozens of lists.
# The list contains something like
[('A', 0.1),('B', 0.2),('C',0.3)]
我正在嘗試撰寫一個回圈,以便可以將所有不同的串列保存到資料框中的不同列中。我試過的代碼是:
for i in range(1,number) # number is the total number of lists 1
df_02 = pd.DataFrame(get_topic(i)
這只回傳 list1,但沒有其他串列。我想得到的結果是這樣的:
| 清單 1 | 1號 | 清單 2 | 2號 |
|---|---|---|---|
| 一個 | 0.1 | 丁 | 0.03 |
| 乙 | 0.2 | 乙 | 0.04 |
| C | 0.3 | F | 0.05 |
誰能幫我糾正回圈?謝謝你。
uj5u.com熱心網友回復:
df = pd.DataFrame()
for i in range(1, number):
df[f'List {i}'], df[f'Number {i}'] = zip(*get_topic(i))
uj5u.com熱心網友回復:
我重建了一個假設的 get_topic() 函式,它只是從串列的串列中獲取一個串列。
這個想法是使用pd.concat()以便在每次迭代時連接資料幀。
import pandas as pd
topics = [
[('A', 0.1), ('B', 0.2), ('C', 0.3)],
[('D', 0.3), ('E', 0.4), ('F', 0.5)]
]
number = len(topics)
def get_topic(index) -> []:
return topics[index]
if __name__ == '__main__':
df = pd.DataFrame()
for i in range(0, number): # number is the total number of lists
curr_topic = get_topic(i)
curr_columns = ['List ' str(i 1), 'Number ' str(i 1)]
df = pd.concat([df, pd.DataFrame(data=curr_topic, columns=curr_columns)], axis=1)
print(df)
輸出將是:
List 1 Number 1 List 2 Number 2
0 A 0.1 D 0.3
1 B 0.2 E 0.4
2 C 0.3 F 0.5
uj5u.com熱心網友回復:
您在每次迭代時都會創建一個新的 DataFrame。
這將創建一個類似于您想要的結構:
df = pd.DataFrame([get_topic(i) for i in range(1, number)])
df = df.apply(pd.Series.explode).reset_index(drop=True)
df = df.transpose()
結果:
0 1 2 3 4 5
0 A 0.1 D 0.1 G 0.1
1 B 0.2 E 0.2 H 0.2
2 C 0.3 F 0.3 I 0.3
單線版本:
df = pd.DataFrame([get_topic(i) for i in range(1, number)]).apply(pd.Series.explode).reset_index(drop=True).transpose()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/536585.html
