我已经创建了一个循环来生成一些值。我想把这些值存储在一个数据框中。例如,完成一个循环,追加到第一行。
def calculate (allFiles):
result = pd.DataFrame(columns = ['Date','Mid Ebb Total','Mid Flood Total','Mid Ebb Control','Mid Flood Control'])
total_Mid_Ebb = 0
total_Mid_Flood = 0
total_Mid_EbbControl = 0
total_Mid_FloodControl = 0
for file_ in allFiles:
xls = pd.ExcelFile(file_)
df = xls.parse('General Impact')
Mid_Ebb = df[df['Tidal Mode'] == "Mid-Ebb"] #filter
Mid_Ebb_control = df[df['Station'].isin(['C1','C2','C3'])] #filter control
Mid_Flood = df[df['Tidal Mode'] == "Mid-Flood"] #filter
Mid_Flood_control = df[df['Station'].isin(['C1','C2','C3', 'SR2'])] #filter control
total_Mid_Ebb += Mid_Ebb.Station.nunique() #count unique stations = sample number
total_Mid_Flood += Mid_Flood.Station.nunique()
total_Mid_EbbControl += Mid_Ebb_control.Station.nunique()
total_Mid_FloodControl += Mid_Flood_control.Station.nunique()
Mid_Ebb_withoutControl = total_Mid_Ebb - total_Mid_EbbControl
Mid_Flood_withoutControl = total_Mid_Flood - total_Mid_FloodControl
print('Ebb Tide: The total number of sample is {}. Number of sample without control station is {}. Number of sample in control station is {}'.format(total_Mid_Ebb, Mid_Ebb_withoutControl, total_Mid_EbbControl))
print('Flood Tide: The total number of sample is {}. Number of sample without control station is {}. Number of sample in control station is {}'.format(total_Mid_Flood, Mid_Flood_withoutControl, total_Mid_FloodControl))
dataframe结果包含4列。日期是固定的。我想把total_Mid_eb,Mid_eb_without control,total_Mid_ebc控制到数据帧。
我相信您需要在循环中将标量追加到元组列表中,然后使用
DataFrame
构造函数。result
数据帧中的最后计数差异:注意这不会按要求为每个文件生成一行,但它更多的是关于Pandas在此类问题中的一般用法的评论-读取所有数据然后使用Pandas文件进行处理通常比在不同的情况下编写自己的循环更容易。
我认为你在这里用熊猫不是惯用的方式。我认为这样做可以节省大量代码并获得更容易理解的结果:
所以在这里,您首先将所有的excel文件读入一个数据框,然后添加一个列来指示它是否是控制站,然后使用groupby来计算不同的组合。
counts
是一个具有二维索引的系列(对于某些合成数据):您可以这样访问函数中的值:
之后,您可以轻松地将它们添加到数据帧:
下面是在循环的每次迭代之后加载数据帧中每列数据的示例。虽然这不是唯一的方法,但它有助于更好地理解概念。
必要的进口
首先定义一个由5列组成的空数据框以匹配您的问题
接下来,我们遍历for循环并使用
randint()
生成值,然后一次向每个列添加一个值,每个列一直以“a”开头,一直到“E”我们得到一个有5行填充的DF。
希望以上的帮助和您能够为您的需要量身打造。
相关问题 更多 >
编程相关推荐