Pandas拼接新列

3

为什么我的'ACTION'列会出现NaN值? 我感到很奇怪,我已经尝试过使用ignore_index = True,但是它导致了频率错误。

                        C     H     L     O     OI       V   WAP  ACTION
datetime                                                                
2017-03-14 00:52:00  8.25  8.25  8.19  8.21  302.0  1769.0  8.22     NaN
2017-03-13 23:54:00  8.09  8.10  8.09  8.10    6.0    65.0  8.10     NaN
2017-03-14 01:03:00  8.29  8.32  8.28  8.29  175.0  1084.0  8.30     NaN
2017-03-14 00:03:00  8.15  8.15  8.14  8.15   13.0    50.0  8.15     NaN
2017-03-13 23:57:00  8.13  8.13  8.12  8.12    3.0     6.0  8.12     NaN

我想获取 -

                        C     H     L     O     OI       V   WAP  ACTION
datetime                                                                
2017-03-14 00:52:00  8.25  8.25  8.19  8.21  302.0  1769.0  8.22     100
2017-03-13 23:54:00  8.09  8.10  8.09  8.10    6.0    65.0  8.10     200
2017-03-14 01:03:00  8.29  8.32  8.28  8.29  175.0  1084.0  8.30     300
2017-03-14 00:03:00  8.15  8.15  8.14  8.15   13.0    50.0  8.15     400
2017-03-13 23:57:00  8.13  8.13  8.12  8.12    3.0     6.0  8.12     500

buy_stp = pd.Series([100,200,300,400,500],name= 'ACTION')
print(buy_stp)
df10 = pd.concat([df_concat_results,
                  buy_stp],
                  axis=1,
                  join_axes=[df_concat_results.index])

print(df10)
2个回答

1
你需要相同的索引 - SeriesDataFrame 需要对齐,否则会得到 NaN 值:
buy_stp.index = df.index
df['ACTION'] = buy_stp
print (df)
                        C     H     L     O     OI       V   WAP  ACTION
datetime                                                                
2017-03-14 00:52:00  8.25  8.25  8.19  8.21  302.0  1769.0  8.22     100
2017-03-13 23:54:00  8.09  8.10  8.09  8.10    6.0    65.0  8.10     200
2017-03-14 01:03:00  8.29  8.32  8.28  8.29  175.0  1084.0  8.30     300
2017-03-14 00:03:00  8.15  8.15  8.14  8.15   13.0    50.0  8.15     400
2017-03-13 23:57:00  8.13  8.13  8.12  8.12    3.0     6.0  8.12     500

或者:

buy_stp = pd.Series([100,200,300,400,500],name= 'ACTION', index=df.index)
print(buy_stp)
datetime
2017-03-14 00:52:00    100
2017-03-13 23:54:00    200
2017-03-14 01:03:00    300
2017-03-14 00:03:00    400
2017-03-13 23:57:00    500
Name: ACTION, dtype: int64

df['ACTION'] = buy_stp
print (df)
                        C     H     L     O     OI       V   WAP  ACTION
datetime                                                                
2017-03-14 00:52:00  8.25  8.25  8.19  8.21  302.0  1769.0  8.22     100
2017-03-13 23:54:00  8.09  8.10  8.09  8.10    6.0    65.0  8.10     200
2017-03-14 01:03:00  8.29  8.32  8.28  8.29  175.0  1084.0  8.30     300
2017-03-14 00:03:00  8.15  8.15  8.14  8.15   13.0    50.0  8.15     400
2017-03-13 23:57:00  8.13  8.13  8.12  8.12    3.0     6.0  8.12     500

如果通过 valueslist 转换为 numpy array,也可以正常工作,只需要确保 dfbuy_stp 长度相同:

df['ACTION'] = buy_stp.values
print (df)
                        C     H     L     O     OI       V   WAP  ACTION
datetime                                                                
2017-03-14 00:52:00  8.25  8.25  8.19  8.21  302.0  1769.0  8.22     100
2017-03-13 23:54:00  8.09  8.10  8.09  8.10    6.0    65.0  8.10     200
2017-03-14 01:03:00  8.29  8.32  8.28  8.29  175.0  1084.0  8.30     300
2017-03-14 00:03:00  8.15  8.15  8.14  8.15   13.0    50.0  8.15     400
2017-03-13 23:57:00  8.13  8.13  8.12  8.12    3.0     6.0  8.12     500

df['ACTION'] = buy_stp.tolist()
print (df)
                        C     H     L     O     OI       V   WAP  ACTION
datetime                                                                
2017-03-14 00:52:00  8.25  8.25  8.19  8.21  302.0  1769.0  8.22     100
2017-03-13 23:54:00  8.09  8.10  8.09  8.10    6.0    65.0  8.10     200
2017-03-14 01:03:00  8.29  8.32  8.28  8.29  175.0  1084.0  8.30     300
2017-03-14 00:03:00  8.15  8.15  8.14  8.15   13.0    50.0  8.15     400
2017-03-13 23:57:00  8.13  8.13  8.12  8.12    3.0     6.0  8.12     500

0
如果我理解你的意思正确的话,你只是想给一个数据框添加一列。如果是这样,这是最简单的方法。
df['Action'] = buy_stp

这就是我想要做的。正如Jezrael在下面指出的那样,我的索引需要与之相同。 - Ross Demtschyna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接