合并部分值
Combine a part of values
我有一个这样的数据框:
In:
daten["Gas"].head(5)
Out:
2016-12-09 10:22:00 2.1
2016-12-09 10:22:15 5.1
2016-12-09 10:22:30 3.2
2016-12-09 10:22:45 2.0
2016-12-09 10:23:00 1.1
我将使用这些值的一部分进行计算,然后将它们放回列中。
von = pd.to_datetime("12.09.16 10:22:15",infer_datetime_format=True)
bis = pd.to_datetime("12.09.16 10:22:45",infer_datetime_format=True)
auswahl = daten.loc[von:bis]
auswahl["Gas_neu"] = auswahl["Gas"] - 2 // just an example
new Out:
2016-12-09 10:22:00 2.1
2016-12-09 10:22:15 3.1
2016-12-09 10:22:30 1.2
2016-12-09 10:22:45 0.0
2016-12-09 10:23:00 1.1
遗憾的是 .combine 在这种情况下不起作用,还有其他方法吗?
这是计算
auswahl["Gas_1"] = auswahl["Gas"]
auswahl["Gas_1"] = (auswahl["Gas_1"] - auswahl["Gas_1"].shift()).fillna(0)
auswahl["Gas_1"] = auswahl["Gas_1"] * 2400
您可以使用:
daten.loc[von:bis, 'Gas'] -= 2
print (daten)
Gas
2016-12-09 10:22:00 2.1
2016-12-09 10:22:15 3.1
2016-12-09 10:22:30 1.2
2016-12-09 10:22:45 0.0
2016-12-09 10:23:00 1.1
什么相同:
daten.loc[von:bis, 'Gas'] = daten.loc[von:bis, 'Gas'] - 2
print (daten)
Gas
2016-12-09 10:22:00 2.1
2016-12-09 10:22:15 3.1
2016-12-09 10:22:30 1.2
2016-12-09 10:22:45 0.0
2016-12-09 10:23:00 1.1
对于新列:
daten.loc[von:bis, 'Gas_neu'] = (daten.loc[von:bis, 'Gas'] - 2)
daten['Gas_neu'] = daten['Gas_neu'].fillna(daten['Gas'])
print (daten)
Gas Gas_neu
2016-12-09 10:22:00 2.1 2.1
2016-12-09 10:22:15 5.1 3.1
2016-12-09 10:22:30 3.2 1.2
2016-12-09 10:22:45 2.0 0.0
2016-12-09 10:23:00 1.1 1.1
没有过滤的解决方案:
daten['Gas_1'] = (daten["Gas"] - daten["Gas"].shift()).fillna(0).mul(2400)
daten['Gas_2'] = daten["Gas"].diff().fillna(0).mul(2400)
print (daten)
Gas Gas_1 Gas_2
2016-12-09 10:22:00 2.1 0.0 0.0
2016-12-09 10:22:15 5.1 7200.0 7200.0
2016-12-09 10:22:30 3.2 -4560.0 -4560.0
2016-12-09 10:22:45 2.0 -2880.0 -2880.0
2016-12-09 10:23:00 1.1 -2160.0 -2160.0
并进行过滤:
von = pd.to_datetime("12.09.16 10:22:15",infer_datetime_format=True)
bis = pd.to_datetime("12.09.16 10:22:45",infer_datetime_format=True)
daten.loc[von:bis, 'Gas_neu'] = daten.loc[von:bis, 'Gas'].diff().fillna(0).mul(2400)
daten['Gas_neu'] = daten['Gas_neu'].fillna(daten['Gas'])
print (daten)
Gas Gas_neu
2016-12-09 10:22:00 2.1 2.1
2016-12-09 10:22:15 5.1 0.0
2016-12-09 10:22:30 3.2 -4560.0
2016-12-09 10:22:45 2.0 -2880.0
2016-12-09 10:23:00 1.1 1.1
我有一个这样的数据框:
In:
daten["Gas"].head(5)
Out:
2016-12-09 10:22:00 2.1
2016-12-09 10:22:15 5.1
2016-12-09 10:22:30 3.2
2016-12-09 10:22:45 2.0
2016-12-09 10:23:00 1.1
我将使用这些值的一部分进行计算,然后将它们放回列中。
von = pd.to_datetime("12.09.16 10:22:15",infer_datetime_format=True)
bis = pd.to_datetime("12.09.16 10:22:45",infer_datetime_format=True)
auswahl = daten.loc[von:bis]
auswahl["Gas_neu"] = auswahl["Gas"] - 2 // just an example
new Out:
2016-12-09 10:22:00 2.1
2016-12-09 10:22:15 3.1
2016-12-09 10:22:30 1.2
2016-12-09 10:22:45 0.0
2016-12-09 10:23:00 1.1
遗憾的是 .combine 在这种情况下不起作用,还有其他方法吗?
这是计算
auswahl["Gas_1"] = auswahl["Gas"]
auswahl["Gas_1"] = (auswahl["Gas_1"] - auswahl["Gas_1"].shift()).fillna(0)
auswahl["Gas_1"] = auswahl["Gas_1"] * 2400
您可以使用:
daten.loc[von:bis, 'Gas'] -= 2
print (daten)
Gas
2016-12-09 10:22:00 2.1
2016-12-09 10:22:15 3.1
2016-12-09 10:22:30 1.2
2016-12-09 10:22:45 0.0
2016-12-09 10:23:00 1.1
什么相同:
daten.loc[von:bis, 'Gas'] = daten.loc[von:bis, 'Gas'] - 2
print (daten)
Gas
2016-12-09 10:22:00 2.1
2016-12-09 10:22:15 3.1
2016-12-09 10:22:30 1.2
2016-12-09 10:22:45 0.0
2016-12-09 10:23:00 1.1
对于新列:
daten.loc[von:bis, 'Gas_neu'] = (daten.loc[von:bis, 'Gas'] - 2)
daten['Gas_neu'] = daten['Gas_neu'].fillna(daten['Gas'])
print (daten)
Gas Gas_neu
2016-12-09 10:22:00 2.1 2.1
2016-12-09 10:22:15 5.1 3.1
2016-12-09 10:22:30 3.2 1.2
2016-12-09 10:22:45 2.0 0.0
2016-12-09 10:23:00 1.1 1.1
没有过滤的解决方案:
daten['Gas_1'] = (daten["Gas"] - daten["Gas"].shift()).fillna(0).mul(2400)
daten['Gas_2'] = daten["Gas"].diff().fillna(0).mul(2400)
print (daten)
Gas Gas_1 Gas_2
2016-12-09 10:22:00 2.1 0.0 0.0
2016-12-09 10:22:15 5.1 7200.0 7200.0
2016-12-09 10:22:30 3.2 -4560.0 -4560.0
2016-12-09 10:22:45 2.0 -2880.0 -2880.0
2016-12-09 10:23:00 1.1 -2160.0 -2160.0
并进行过滤:
von = pd.to_datetime("12.09.16 10:22:15",infer_datetime_format=True)
bis = pd.to_datetime("12.09.16 10:22:45",infer_datetime_format=True)
daten.loc[von:bis, 'Gas_neu'] = daten.loc[von:bis, 'Gas'].diff().fillna(0).mul(2400)
daten['Gas_neu'] = daten['Gas_neu'].fillna(daten['Gas'])
print (daten)
Gas Gas_neu
2016-12-09 10:22:00 2.1 2.1
2016-12-09 10:22:15 5.1 0.0
2016-12-09 10:22:30 3.2 -4560.0
2016-12-09 10:22:45 2.0 -2880.0
2016-12-09 10:23:00 1.1 1.1