我有个代码可以发出警告信息
FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
data = data.append(row, ignore_index=True)问题1:我想知道如何在下面的代码中使用concat而不是附加。
import pandas as pd
from datetime import datetime
data = pd.DataFrame()
for i in range(30):
value = datetime.now()
value1 = i
value2 = i + 20
value3 = i - 10
if value3 >= 15:
row = pd.Series([value, value1, value2, value3])
data = data.append(row, ignore_index=True)
data.columns = ['Time', 'Entry Price', 'Target', 'Stop Loss']
print(data)问题2:"If“条件值将在我的实际代码中更改。有时,它的预期结果将是空数据帧。
例:
if value3 >= 20:
row = pd.Series([value, value1, value2, value3])
data = data.append(row, ignore_index=True)
data.columns = ['Time', 'Entry Price', 'Target', 'Stop Loss']
print(data)这是抛出错误
File "C:\Users\jayan\.conda\envs\TestEnvironment\lib\site-packages\pandas\core\internals\base.py", line 70, in _validate_set_axis
raise ValueError(
ValueError: Length mismatch: Expected axis has 0 elements, new values have 4 elements我尝试了下面的代码,但是输出不是预期的格式。
import pandas as pd
from datetime import datetime
data = pd.DataFrame()
for i in range(30):
value = datetime.now()
value1 = i
value2 = i + 20
value3 = i - 10
if value3 >= 15:
row = pd.DataFrame([value, value1, value2, value3])
data = pd.concat([data, row])
print(data)输出
runfile('C:/AlgoTrade/test/untitled0.py', wdir='C:/AlgoTrade/test')
0
0 2022-11-11 17:06:29.709333
1 25
2 45
3 15
0 2022-11-11 17:06:29.709333
1 26
2 46
3 16
0 2022-11-11 17:06:29.709333
1 27
2 47
3 17
0 2022-11-11 17:06:29.710333
1 28
2 48
3 18
0 2022-11-11 17:06:29.710333
1 29
2 49
3 19预期输出应采用以下格式,没有任何警告消息。
runfile('C:/AlgoTrade/test/untitled0.py', wdir='C:/AlgoTrade/test')
Time Entry Price Target Stop Loss
0 2022-11-11 17:09:32.104801 25 45 15
1 2022-11-11 17:09:32.104801 26 46 16
2 2022-11-11 17:09:32.104801 27 47 17
3 2022-11-11 17:09:32.104801 28 48 18
4 2022-11-11 17:09:32.104801 29 49 19发布于 2022-11-11 11:51:26
维护九月清单并附上它们。
import pandas as pd
from datetime import datetime
l1=[]
l2=[]
l3=[]
l4=[]
data = pd.DataFrame()
for i in range(30):
value = datetime.now()
value1 = i
value2 = i + 20
value3 = i - 10
if value3 >= 15:
l1.append(value)
l2.append(value1)
l3.append(value2)
l4.append(value3)
data = pd.DataFrame(
{'Time': l1,
'Entry Price': l2,
'Target': l3,
'Stop Loss':l4
})
print(data)输出#
Time Entry Price Target Stop Loss
0 2022-11-11 17:47:32.846271 25 45 15
1 2022-11-11 17:47:32.846271 26 46 16
2 2022-11-11 17:47:32.846271 27 47 17
3 2022-11-11 17:47:32.846271 28 48 18
4 2022-11-11 17:47:32.846271 29 49 19https://stackoverflow.com/questions/74401983
复制相似问题