鉴于以下列表:
list=['a','b','c']
Run Code Online (Sandbox Code Playgroud)
我想创建一个数据框,其中列表是值列.我希望标题是"标题".
像这样:
header
a
b
c
Run Code Online (Sandbox Code Playgroud)
提前致谢!
给出以下数据框:
import pandas as pd
df=pd.DataFrame({'A':['a','b','c'],
'first_date':['2015-08-31 00:00:00','2015-08-24 00:00:00','2015-08-25 00:00:00']})
df.first_date=pd.to_datetime(df.first_date) #(dtype='<M8[ns]')
df['last_date']=pd.to_datetime('5/6/2016') #(dtype='datetime64[ns]')
df
A first_date last_date
0 a 2015-08-31 2016-05-06
1 b 2015-08-24 2016-05-06
2 c 2015-08-25 2016-05-06
Run Code Online (Sandbox Code Playgroud)
我想创建一个新列,其中包含'first_date'和'last_date'之间的日期列表(或数组),它排除了周末.
到目前为止,我试过这个:
pd.date_range(df['first_date'],df['last_date'])
Run Code Online (Sandbox Code Playgroud)
...但发生此错误:
TypeError: Cannot convert input to Timestamp
Run Code Online (Sandbox Code Playgroud)
我也在pd.date_range之前试过这个...
pd.Timestamp(df['first_date'])
Run Code Online (Sandbox Code Playgroud)
......但没有骰子.
提前致谢!
PS:
在这个障碍之后,我将尝试查看其他日期列表,如果它们属于生成的数组('A'中的每一行),则将它们从列表或数组中减去.我会把它作为一个单独的问题发布.
以下是 XSLX Writer 文档中的示例:
worksheet.write_formula('A1', '=10*B1 + C1')
Run Code Online (Sandbox Code Playgroud)
看起来很简单。但是如果我想将此公式应用于“A1:A30”怎么办?另外,如果在单元格 A3 中,公式应动态更新为:
'=10*B3 + C3'
Run Code Online (Sandbox Code Playgroud)
?
我无法通过查看文档来做到这一点。我看到 write_array_formula 是一个很有前途的选项,但我不需要数组公式。
我提出了一种涉及循环每一行和每一列的解决方案,但我希望有一个更简单的解决方案。
使用下面的代码,我试图将 pdf 页面导入现有的画布对象并保存为 PDF。这通常工作得很好,但我注意到当我尝试使用从扫描文档生成的 PDF 时,它会导致一个空白页面。有接班人吗?
from reportlab.pdfgen import canvas
from pdfrw import PdfReader
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl
c = canvas.Canvas(Out_Folder+pdf_file_name)
c.setPageSize([11*inch, 8.5*inch])
page = PdfReader(folder+'2_VisionMissionValues.pdf',decompress=False).pages
p = pagexobj(page[0])
c.setPageSize([11*inch, 8.5*inch]) #Set page size (for landscape)
c.doForm(makerl(c, p))
c.showPage()
c.save()
Run Code Online (Sandbox Code Playgroud)
提前致谢!
给定以下数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':['One','Two',np.nan],
'B':[np.nan,np.nan,'Three'],
})
df
A B
0 One NaN
1 Two NaN
2 NaN Three
Run Code Online (Sandbox Code Playgroud)
我想创建一列(“C”),如果它不是 NaN,则它采用“A”或“B”的值,如下所示:
A B C
0 One NaN One
1 Two NaN Two
2 NaN Three Three
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我要替换为:path = r'C:/ Folder与此:path = r'variable
变量在其他地方定义的地方。
在不确定如何将变量名放在r'之后
我正在尝试获取红色圆点的值(“ y2”的值)以绘制到圆点的左侧。我正在使用ha ='left',但无济于事。我尝试了以下两个方法:
for a,b in zip(ind, y2):
plt.text(a, b, str(b), fontsize=14, color='black', va='center', ha='left)
#OR:
for i, text in enumerate(y2):
ax.annotate(str(text), (ind[i],y2[i]), ha='left')
Run Code Online (Sandbox Code Playgroud)
这是完整的代码:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
df0=pd.read_csv('sample1.csv')
import matplotlib.pyplot as plt
# You typically want your plot to be ~1.33x wider than tall.
# Common sizes: (10, 7.5) and (12, 9)
fig, ax = plt.subplots(1, 1, figsize=(12, 9))
plt.xticks(ind, x_axis, fontsize=14)
#Set y-axis font size …Run Code Online (Sandbox Code Playgroud) 在这段代码中,我尝试创建一个条形图,其中一个条形图(作为将放置在其他条形图旁边的“总”条形图)和数据框的切片。它适用于数据帧的其他切片,但对于“总”切片(只是一行),我不断收到此“关键错误:0”:
x_4t = dfCOPN['Percent'][-1:]
y_4t = dfCOPN['index'][-1:]
ind4t = np.arange(len(y_4t))
Run Code Online (Sandbox Code Playgroud)
...
for i, text in enumerate(ind4t):
if x_4t<72:
ax4t.annotate(str(x_4t)[:-2]+"%", xy=(x_4t+2,ind4t+0.4),fontsize=9, color='black', va='center', ha='left')
elif x_4t>=72:
ax4t.annotate(str(x_4t[i])[:-2]+"%", xy=(x_4t[i]-2,ind4t[i]+0.4),fontsize=9, color='white', va='center', ha='right')
Run Code Online (Sandbox Code Playgroud)
这是错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-42-e192a1699cc5> in <module>()
174 # for i, text in enumerate(ind4t):
--> 175 if x_4t<72:
176 ax4t.annotate(str(x_4t)[:-2]+"%", xy=(x_4t+2,ind4t+0.4),fontsize=9, color='black', va='center', ha='left')
C:\Users\m\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
729 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 730 .format(self.__class__.__name__))
731
ValueError: The truth value of a Series …Run Code Online (Sandbox Code Playgroud) 鉴于此格式和条件格式:
# Add a format. Light red fill.
format1 = workbook.add_format({'bg_color': '#FFC7CE'})
worksheet.conditional_format('B2:B14',
{'type':'cell',
'criteria': '<',
'value': 1,
'format': format1
})
Run Code Online (Sandbox Code Playgroud)
如果相应的单元格 C2:C14 满足条件,我想将此条件应用于单元格 B2:B14。例如,如果单元格 C2 小于 1,则将格式应用于单元格 B2。
@jmcnamara ?
提前致谢!
鉴于以下列表:
a=[1,2,3]
Run Code Online (Sandbox Code Playgroud)
我想生成一个新列表,其中每个数字是它和它之前的值的总和,如下所示:
result = [1,3,6]
Run Code Online (Sandbox Code Playgroud)
逻辑:
1没有先前的值,所以它保持不变.
3是从第一个值(1)加到列表中的第二个数字的值(2)
6是来自前两个元素的1和2的总和,加上3的第三个值.
提前致谢!
给定以下数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Site':['A','A','A','B','B','B','C','C','C'],
'Value':[np.nan,1,np.nan,np.nan,2,2,3,np.nan,3]})
df
Site Value
0 A NaN
1 A 1.0
2 A NaN
3 B NaN
4 B 2.0
5 B 2.0
6 C 3.0
7 C NaN
8 C 3.0
Run Code Online (Sandbox Code Playgroud)
我想用站点的最常见(中位数或平均值)值填充 NaN 值。想要的结果是:
Site Value
0 A 1.0
1 A 1.0
2 A 1.0
3 B 2.0
4 B 2.0
5 B 2.0
6 C 3.0
7 C 3.0
8 C 3.0
Run Code Online (Sandbox Code Playgroud)
提前致谢!
更新:这很接近,但没有雪茄:
df['Value']=df.groupby(['Site'])['Value'].fillna(min)
Run Code Online (Sandbox Code Playgroud)
导致...
Site …Run Code Online (Sandbox Code Playgroud) python-3.x ×7
pandas ×5
python ×4
xlsxwriter ×2
dataframe ×1
date-range ×1
matplotlib ×1
numpy ×1
path ×1
pdf-reader ×1
pdfrw ×1
reportlab ×1
sum ×1
timestamp ×1