Python 从多数据帧中的选定行创建新数据帧
我有三个数据帧。我想按日期从所有3个数据帧中选择行Python 从多数据帧中的选定行创建新数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有三个数据帧。我想按日期从所有3个数据帧中选择行2020-10-26,然后我想创建一个新的数据帧。怎么做 import pandas as pd from datetime import date date1 = date.fromisoformat('2020-10-25') date2 = date.fromisoformat('2020-10-26') date3 = date.fromisoformat('2020-10-27') for x in range(3): df
2020-10-26
,然后我想创建一个新的数据帧。怎么做
import pandas as pd
from datetime import date
date1 = date.fromisoformat('2020-10-25')
date2 = date.fromisoformat('2020-10-26')
date3 = date.fromisoformat('2020-10-27')
for x in range(3):
df = pd.DataFrame([(date1,f'Stu{x}j', x+1, f'Varan{x}j', x*400+2),
(date2,f'aja{x}k', x+2, f'Del{x}j', x*634+3),
(date3,f'Aadi{x}t', x+4, f'Mumb{x}j', x*454+4),
(date2,f'har{x}h', x+5, f'bom{x}j', x*124+5)],
columns =['Date','Name', 'Age',
'City', 'Salary'])
df.set_index('Date', inplace = True)
print(df)
你可以做:
row1 = df1.loc[date2, :]
row2 = df2.loc[date2, :]
row3 = df3.loc[date2, :]
pd.concat([row1,row2,row3], axis=1).T
输出:
Name Age City Salary
2020-10-26 ajay 32 Delhi 25000
2020-10-26 Saumya 32 Kanpur 20000
2020-10-26 Aaditya 40 Dehradun 24000
下面的代码将帮助您
import pandas as pd
from datetime import date
date1 = date.fromisoformat('2020-10-25')
date2 = date.fromisoformat('2020-10-26')
date3 = date.fromisoformat('2020-10-27')
res = pd.DataFrame()
for x in range(3):
df = pd.DataFrame([(date1,f'Stu{x}j', x+1, f'Varan{x}j', x*400+2),
(date2,f'aja{x}k', x+2, f'Del{x}j', x*634+3),
(date3,f'Aadi{x}t', x+4, f'Mumb{x}j', x*454+4),
(date2,f'har{x}h', x+5, f'bom{x}j', x*124+5)],
columns =['Date','Name', 'Age',
'City', 'Salary'])
temp = df[df['Date'].isin([date2])]
res = res.append(temp)
print(res)
旧方法:
fr = [df1, df2, df3]
full = pd.concat(fr).reset_index()
full[full.Date.isin([date2])]
你的预期产出是多少?如何处理同一日期和同一列名的冲突内容?如何在循环中实现这一点我已更改了代码请再次访问谢谢@Marcuseror
ObjectHashTable.get_item KeyError:'Date'
@subbuvidyasekaries但我的实际代码与此虚拟代码不同我认为您以前的解决方案是正确的请在合并所有df@subbuvidyasekaries后编写最后两步如果我们在每次迭代中选择row并将其附加到空df中,则答案@stackdotpop中的方法仍然不起作用。我认为它会起作用。您认为如何??@SubbuVidyaSekarLet我们。