0
这里的问题是我拉一个csv成熊猫的数据帧,看起来像这样:有条件地将行插入大熊猫数据帧
Identity Date value1 value2 Random
Apple 1/1/2005 10 10 Orange
Apple 12/1/2005 1 1 Orange
我需要再调用身份苹果,发现它的最小值和最大值的日期,插入行,即个月,以便在两点之间进行插值,以便最终结果变成
Identity Date value1 value2 Random
Apple 1/1/2005 10 10 Orange
Apple 2/1/2005 0 0 Orange
Apple 3/1/2005 0 0 Orange
. . . . .
. . . . .
. . . . .
Apple 12/1/2005 1 1 Orange
的问题是,虽然我可以通过标识列表循环,并获得相关的所有行我似乎无法找到一种方法,然后插入额外的行,尤其是没有讨厌的循环。基本上我需要弥合日期间隔并用零填充关联的身份值。
list = ['Apple','Banana','Orange']
for i in range(0,len(list))
data.loc[data['Identity'].isin(list[i])]
编辑:
工作下面的代码:
import pandas as pd
df = pd.DataFrame([['Apple',pd.to_datetime('1/1/2005'),10,10,'Orange'], ['Orange', pd.to_datetime('8/1/2005'),1, 1 ,'Apple'],['Apple', pd.to_datetime('12/1/2005'),1, 1 ,'Orange']])
df.columns = ['Identity','Date', 'value1' , 'value2','Random']
full_df = pd.DataFrame()
dummydata = []
indentity = ['Apple','Orange']
random = ['Orange','Apple']
years = ['2005','2005']
for i in range(0,2):
full_df = pd.DataFrame()
full_df['Date'] = [pd.to_datetime(str(x)+'/1/'+str(years[i])) for x in range(1,13)]
full_df['Identity'] = indentity[i]
full_df['Random'] = random[i]
dummydata.append(full_df)
full_df = pd.concat(dummydata)
result = full_df.merge(df,how='left').fillna(0)
#print(dummydata)
#print(full_df)
print(result)
欢迎来到StackOverflow!你可以尝试提供一个最小的例子与csv数据,然后代码为最小的例子?这样我们可以复制csv数据并尝试代码,并为您提供帮助。例如,你不需要气体,水等,也许只有2列。当你在你的例子中使用'Apple'时,它有点混淆,你的代码反映了不同的变量。 – imp9
我想添加这个额外的代码不会有帮助,因为我希望这可以使用熊猫数据框来提高速度。你会认为通过插入行来插入非现有日期之间的内插就像是一个班轮 –
我建议将原始代码减少到最小,以便你和其他人更容易找到你的错误。我很困惑,因为它不符合这个例子。 – imp9