草庐IT

Pandas-Datareader

全部标签

python - 从一个函数在 Pandas Dataframe 中创建多列

我是一个Python新手,所以我希望我的两个问题是清楚和完整的。我在下面以csv格式发布了实际代码和测试数据集。我已经能够构建以下代码(主要是在StackOverflow贡献者的帮助下)来使用Newton-Raphson方法计算期权合约的隐含波动率。该过程在确定隐含波动率时计算Vega。虽然我可以使用PandasDataFrameapply方法为隐含波动率创建一个新的DataFrame列,但我无法为Vega创建第二个列。当函数同时返回IV和Vega时,有没有办法创建两个单独的DataFrame列?我试过:从函数返回iv,vegadf[['myIV','Vega']]=df.apply(

python - 在 Pandas 中将列拆分为多行的快速方法

我有以下数据框:importpandasaspddf=pd.DataFrame({'gene':["foo","bar//lal","qux","woz"],'cell1':[5,9,1,7],'cell2':[12,90,13,87]})df=df[["gene","cell1","cell2"]]df看起来像这样:Out[6]:genecell1cell20foo5121bar//lal9902qux1133woz787我想做的是拆分“基因”列,使其结果如下:genecell1cell2foo512bar990lal990qux113woz787我目前的做法是这样的:importp

python - 在 Pandas DataFrame 的字符串中漂亮地打印换行符

我有一个PandasDataFrame,其中一列包含字符串元素,这些字符串元素包含我想按字面打印的新行。但它们只是在输出中显示为\n。也就是说,我要打印这个:posbidder011223但这就是我得到的:posbidder011223我怎样才能完成我想要的?我可以使用DataFrame,还是必须恢复为一次一行手动打印填充列?这是我目前所拥有的:n=4output=pd.DataFrame({'pos':range(1,n+1),'bidder':['']*n})bids={'alice':3,'bob':3}used_pos=[]forbidder,posinbids.items()

python - 有包含列表的 Pandas 列,如何将唯一的列表元素转换为列?

我编写了一个网络抓取工具来从产品表中提取信息并构建数据框。数据表有一个描述列,其中包含描述产品的逗号分隔的属性字符串。我想在数据框中为每个唯一属性创建一个列,并用该属性的子字符串填充该列中的行。下面的示例df。PRODUCTSDATEDESCRIPTIONProductA2016-9-12Steel,Red,HighHardnessProductB2016-9-11Blue,Lightweight,SteelProductC2016-9-12Red我认为第一步是将描述分成一个列表。In:df2=df['DESCRIPTION'].str.split(',')Out:DESCRIPTIO

python - 在 Pandas 中设置多列索引

我像这样制作数据框。df=pd.DataFrame({'class':['A','A','A','A','A','B','B','B','B','B'],'number':[1,2,3,4,5,1,2,3,4,5],'math':[90,20,50,30,57,67,89,79,45,23],'english':[40,21,68,89,90,87,89,54,21,23]})我想使用一些pandas方法将索引转换为此。(例如set_index、堆栈、、、)df1=pd.DataFrame(np.random.randint(1,100,(5,4)),columns=[['A','A'

python - 将 Pandas 列中的日期时间格式化为季度

我有一个DataFrame,其中包含DateTime索引中的列,代表季度,例如:2000-03-3100:00:00如何将其转换为'2000q1'?我查看了文档,但他们只提到了DateTimeIndex.quarterformat='%Y%q'不起作用。选项on='%Y%q也没有 最佳答案 您可以使用to_period("Q"):df.index=df.index.to_period("Q")importpandasaspddf=pd.DataFrame({"y":[1,2,3]},index=pd.to_datetime(["20

Python Pandas 添加文件名列 CSV

我的python代码在下面的例子中工作正常。我的代码结合了一个CSV文件目录并匹配标题。但是,我想更进一步-如何添加一个列来附加所用CSV的文件名?importpandasaspdimportglobglobbed_files=glob.glob("*.csv")#createsalistofallcsvfilesdata=[]#pd.concattakesalistofdataframesasanagrumentforcsvinglobbed_files:frame=pd.read_csv(csv)data.append(frame)bigframe=pd.concat(data,i

python - reshape Pandas 数据框

假设有这样一个数据框:df=pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12]],columns=['A','B','A1','B1'])我想要一个如下所示的数据框:什么不起作用:new_rows=int(df.shape[1]/2)*df.shape[0]new_cols=2df.values.reshape(new_rows,new_cols,order='F')当然我可以遍历数据并制作一个新的列表列表,但必须有更好的方法。有什么想法吗? 最佳答案 您可以使用lreshape,对于id列

python - Pandas 查询函数不适用于列名中的空格

我有一个数据框,列名中有空格。我正在尝试使用query方法来获取结果。它在“c”列上工作正常,但在“ab”上出现错误importpandasaspda=pd.DataFrame(columns=["ab","c"])a["ab"]=[1,2,3,4]a["c"]=[5,6,7,8]a.query('ab==5')为此,我收到此错误:ab==5^SyntaxError:invalidsyntax我不想用“_”等其他字符填充空间。有一个hack使用pandasql将变量名放在括号内示例:[ab] 最佳答案 从pandas0.25开始,您

python - 两个 Pandas 数据框的联合

假设我有两个数据框:df1:A0a1bdf2:A0a1c我希望结果是两个帧的并集,额外列显示该行所属的源数据帧。如果有重复项,应删除重复项,并且相应的额外列应显示两个来源:AB0adf1,df21bdf12cdf2我可以获得没有重复的连接数据框(df3),如下所示:importpandasaspddf3=pd.concat([df1,df2],ignore_index=True).drop_duplicates().reset_index(drop=True)我想不出/找不到一种方法来控制元素的位置。如何添加额外的列?非常感谢您的任何提示。 最佳答案