我正在进行df.apply(myfunction, args=(df2,x,y,z), axis=1)
myfunction()的结果是一个数据帧。但是为了让这个工作数据框应用()返回对象必须是pd系列. 在
myfunction()返回的dataframe有各种列,每列有6行数据。在
我把df转换成dict,然后再转换成series,这样它就可以工作了数据框应用(). 在
pd.Series(df.to_dict()):
的输出
book_sale_date {0: 2016-03-01 00:00:00, 1: 2016-03-01 00:00:0...
countx {0: 17, 1: 31, 2: 92, 3: 12, 4: 92, 5: 92}
dbNUM {0: 93353485.0, 1: 93353485.0, 2: 93353485.0, ...
...
当我将此结构转换回dataframe时:
^{pr2}$结果有正确的列,但只有1行在相应的列中具有正确的数据类型,但都集中在一行中。在
例如,book_sale_date
列如下所示:
{0: 2016-03-01 00:00:00, 1: 2016-03-01 00:00:0, 2: 2016-03-01 00:00:0, 3: 2016-03-01 00:00:0, 4: 2016-03-01 00:00:0, 5: 2016-03-01 00:00:0}
这是intermediate_df.to_clipboard()
的输出,这是我想要构造的df,但是我不得不将它转换成dict,然后转换成一个序列来处理.apply()
。在
sale_month countx onnfl_cumsum_minmax_c_sum_ratio onnfl_max onnfl_min onnfl_sprd onnfl_sprd_median onnfl_sprd_neg_count onnfl_sprd_neg_sum onnfl_sprd_pos_count onnfl_sprd_pos_neg_sum_ratio onnfl_sprd_pos_sum
0 2016-03-01 17 1.54829687344 117.69 -37.31 100.11 0.588235294118 -54.89 0.176470588235 2.82382947714 155.0
1 2016-03-01 31 1.28473432668 220.14 -8.35 177.85 0.354838709677 -72.39 0.290322580645 3.45683105401 250.24
2 2016-03-01 92 1.21749735751 -860.93 0.478260869565 -1185.49 0.195652173913 0.273777087955 324.56
3 2016-03-01 12 13708.76 -937.27 17069.77 292.365 0.25 -1970.44 0.75 9.66292300197 19040.21
4 2016-03-01 92 1.00115588305 13708.76 389.47 15511.95 1413.72 0.282608695652 -376.35 0.413043478261 42.21681945 15888.3
5 2016-03-01 92 1.03090199741 98.32 -4765.51 -5139.15 -471.96 0.489130434783 -5945.64 0.20652173913 0.135643934042 806.49
更新:
我正在体验link的一些变体
另一个问题是使用数据框应用()如果期望的结果是一个数据帧,即使是正确的方法?在
以下是我要做的:
1)我有一个2列的数据帧df,有100万行。在
2)两列是城市名称-城市1和城市2。每一排都是一个大城市群中城市的组合。在
3)我有另一个名为df的数据帧,它有4000个城市的每日每小时温度数据。在
4)我想迭代每一行df并在df2中查找,以提取两个城市中每个城市的温度数据,并计算各种统计数据,即特定时间内的温度差、总和、平均值等
5)result对象是一个dataframe,每个城市对有6行和大约45列的统计信息
如果我通过传入传递给数据框应用()这样就行了。我的问题是我是否应该在for循环中为df或的每一行运行myfunction()数据框应用()? 对于100万行测向更快。在
我得到我想要的工作的方法是做以下事情:
1)更改
myfunction()
函数以返回pd.Series(intermediate_df.unstack())
因此,在将所需的数据帧转换为Series对象之前,请先取消其堆栈
2)将我的呼叫改为
df.apply()
为:我遵循了下面的link关于如何从数据帧创建系列目标的指示。在
也许Pandas文档想要添加一些例子来描述如何做这样的事情。在
相关问题 更多 >
编程相关推荐