过去几天我从我们的数据库中阅读了大量帖子。由于我在 python、pandas 和 numpy 方面的技能有限,我不确定是否找到了我想要的答案。所以请您看看我的情况,看看我能做些什么。对于搜索结果中的中文字符,我们深表歉意。
我目前正在编写一些供个人使用的定量分析。我通过 tushare-pro 检索了一个 csv 文件,这是一个 3825 行的数据帧。
df1 = pd.DataFrame(pd.read_csv(stock_stats_ts.csv))
data1 = np.array(df1.loc[:,:])
返回
[[300826 'N测绘' '建筑工程' ... 41.16 16.85 40171.0]
[2770 '科迪乳业' '乳制品' ... 21.05 4.38 47133.0]
[2503 '搜于特' '服饰' ... 8.6 3.08 65664.0]
...
[2260 '*ST德奥' '家用电器' ... 23.08 3.03 24704.0]
[995 '*ST皇台' '白酒' ... 68.05 -35.24 10275.0]
[939 '*ST凯迪' '新型电力' ... 10.79 -74.92 79373.0]]
然后我将范围缩小到我想要的内容,例如代码/名称/esp/pb/roe
df2 = df1.loc[:,['code','name','esp','pb','npr']]
data2 = np.array(df1.loc[:,:])
返回
[[300826 'N测绘' 1.08 2.79 16.85]
[2770 '科迪乳业' 0.03 2.13 4.38]
[2503 '搜于特' 0.098 2.17 3.08]
...
[2260 '*ST德奥' 0.034 0.0 3.03]
[995 '*ST皇台' -0.079 0.0 -35.24]
[939 '*ST凯迪' -0.362 0.0 -74.92]]
我还有一个我想要的上一交易日的股票名称列表
df3 = pd.DataFrame(pd.read_csv(candidates.csv))
data3 = np.array(df3.loc[:,['candidates']])
返回
[['维维股份']
['ST正源']
['美克家居']
['*ST金山']
['大有能源']
['好当家']
['贵州茅台']
['通策医疗']
['杭州解百']
['耀皮玻璃']
['梅花生物']
['金牌厨柜']
['继峰股份']
['胜利股份']
['渝 开 发']
['云南白药']
['中原环保']
['兴蓉环境']
['华闻集团']
['粤 水 电']
['濮耐股份']
['*ST东南']
['洪涛股份']
['达实智能']
['千红制药']
['闽发铝业']
['史丹利']
['加加食品']
['张家港行']
['国联水产']]
我确信我的候选人肯定在 df2[name] 列中,然后使用哪些代码行以便我可以根据 df3 的结果过滤我的 df2?
感谢首席@Rexhil Regmi 和@nimrodm,我的问题与pd.merge
完美配合。然而,所有这些汉字都是用“gbk”编码的,MS Excel 无法读取。有什么提示可以将它们更改为“utf8”吗?
最佳答案
您可以使用合并来解决您的这个问题。
new_df = df3.merge(df1, left_on='candidate', right_on='name', how='left')
这应该会给你你正在寻找的东西。
关于python-3.x - Pandas Dataframe 使用合并过滤结果。编码解码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61037715/