所以假設我有一個函式 x ,我想遍歷一個 3 的串列我要做的是遍歷這個串列并連接結果。像這樣:
number1 = func(1)
number2 = func(2)
number3 = func(3)
然后
Results = pd.concat([number1, number2, number3], axis = 1)
我試過這樣
numbers = list(range(1:3)
for i in numbers:
Results = pd.concat([func(i)], axis = 1)
它沒有用...
有人有想法嗎?
uj5u.com熱心網友回復:
您可以像建議的其他答案一樣使用串列理解和回圈,或者,如果func只接受一個引數,您可以使用map:
df = pd.concat(map(func, range(1, 4)), axis=1)
示例輸出:
>>> def func(x):
... return pd.DataFrame({f'col{x}':[x, x, x]},)
>>> df = pd.concat(map(func, range(1, 4)), axis=1)
>>> df
col1 col2 col3
0 1 2 3
1 1 2 3
2 1 2 3
uj5u.com熱心網友回復:
使用串列理解試試這個:
results = pd.concat([func(i) for i in range(1,4)], axis=1)
或使用常規回圈:
lst = []
for i in range(1,4):
lst.append(func(i))
results = pd.concat(lst, axis=1)
這將回圈并連接func(1),func(2)和func(3). 重要的是要記住給出range(a,b)排他的范圍。[a,b)b
uj5u.com熱心網友回復:
嘗試串列理解:
numbers = list(range(1,4))
Results = pd.concat([func(i) for i in numbers], axis=1)
uj5u.com熱心網友回復:
這里有兩種方法。正如您在問題中暗示的那樣,第一個使用回圈。第二個簡單地使用串列推導重復呼叫該函式并使用結果來初始化您的結果資料框。
import pandas as pd
def func(i):
return i / 2
numbers = list(range(1, 4))
Results = pd.DataFrame({'result':[func(i) for i in numbers]})
print('Using list comprehension:')
print(Results)
Results = pd.DataFrame({'result':[]})
for i in numbers:
Results = pd.concat([Results, pd.DataFrame({'result':[func(i)]})], axis=0)
print('Using concat in a loop:')
print(Results)
輸出:
Using list comprehension:
result
0 0.5
1 1.0
2 1.5
Using concat in a loop:
result
0 0.5
0 1.0
0 1.5
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/449691.html
