小编Orv*_*var的帖子

创建与另一个尺寸相同的空Dataframe?

我搜索了一下,但找不到一个好的答案.我想创建一个与另一个数据帧具有相同维度的空数据框,以便添加新列.今天我创建一个用零填充的空数据框,然后删除零列.我希望有更好的方法,但找不到答案.有人能帮我吗?

我今天喜欢这个并且它有效,但它非常难看.

df_copy = pandas.DataFrame(numpy.zeros(len(df_original.index))) 
df_copy = df_copy.drop([0],axis=1) 
Run Code Online (Sandbox Code Playgroud)

现在我可以在处理数据时添加新列.所以基本上我想要一个与另一个数据帧具有相同尺寸的空数据帧.

df_copy["price"] = pricesList
df_copy["size"] = sizesList
Run Code Online (Sandbox Code Playgroud)

编辑:另一个密切相关的问题:如何创建尺寸为mxn的空数据框?我在下面得到了如何创建一个尺寸为1xn的空数据帧的答案,即通过设置索引.但是如何创建一个用零填充的空nxm数据帧?我问的原因是因为我怀疑(?)创建零填充数据帧更快,然后根据需要替换每个元素.另一种方法是创建一个尺寸为1xn的空数据框,然后根据需要添加列 - 我被告知速度很慢.因此,创建具有nxm维度的空数据帧然后根据需要替换元素(通过将列表复制到每个列)可能会更快.假设一列有100行,我创建了一个包含25行的子列表,所以我只是将这个列表复制到正确的子列,然后重复.这比添加新列快吗?

python pandas

18
推荐指数
3
解决办法
2万
查看次数

熊猫:ascii编解码器无法编码位置序数不在范围内的字符 - 哪个单元格?

我和Pandas和Excel有很大的问题.我在Excel文档中读入数据帧,这很好.我做计算,一切都很顺利.然后我尝试保存数据帧以检查计算结果,并且pandas爆炸了这个错误消息:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 4: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

这通常表明数据帧中的某些单元格中存在一些非ascii字符.我通常的方法是删除该列,因为我只想分析数字,而不是字符串.

但是,我应该删除哪一列?我没有线索.理想情况下,我想让大熊猫告诉我哪些细胞有问题,或哪些列有问题.截至目前,熊猫不要告诉我任何事情,所以我需要手动检查每个细胞以找到罪魁祸首.我所做的是打印出坏字符,并手动检查每个单元格中的打印字符.这是不可行的.所以我删除所有不可行的字符串列.如何解决这个问题呢?如何找到单元格或列,这会给我带来不良字符的问题?

我试图将所有东西都转换成utf-8,夹心等等,但我无法让它工作.所以我需要一种方法来找到有问题的单元格,以便我可以手动删除字符串.

编辑:解决了!正如bdiamante建议的那样,他的链接显示了这个问题的解决方案.为了将来参考,这适用:

df.to_csv('file.csv',encoding='utf-8-sig')
Run Code Online (Sandbox Code Playgroud)

python excel utf-8 pandas

6
推荐指数
1
解决办法
3985
查看次数

创建受约束的随机数?

清理文字:

如何创建添加upp的m = 5个随机数,比如n = 100.但是,第一个随机数是10 <x1 <30,第二个随机nr是5 <x2 <20,第三个随机nr是10 <x3 <25,等等.所以这五个随机数加起来为100.我可以创建这些约束的五个数字吗?

.

[[

相关问题A1):创建五个随机数加起来为100的标准方法是在[0,100]之间采样四个数字,并添加边界0和100,然后对这六个数字[0,x1,x2, X3,x4,100].我寻求的五个随机数是增量.那是,

100 - x[4] = delta 5
x[4]- x[3] = delta 4
x[3]- x[2] = delta 3
x[2]- x[1] = delta 2
x[1] - 0   = delta 1
Run Code Online (Sandbox Code Playgroud)

这五个增量现在将加起来为100.例如,它们可能是0,1,2,7,90.以下是一些解决此问题的代码:

total_sum = 100
n = 5
v = numpy.random.multinomial(total_sum, numpy.ones(n)/n)
Run Code Online (Sandbox Code Playgroud)

]]

.

对于我的问题,我不能允许宽间隔发生,上面的最大扩展是90-7 = 83这太宽.所以,我必须指定更严格的传播,比如[10,30].这意味着最大的随机数是30,这不允许大的点差,如83.

.

[[

相关问题A2):创建具有相同边界的10 个数字的部分解决方案,10 <x_i <30,加起来为100就像这样:只是在A1中做,但是将下边界10添加到增量.所以我得到了我想要的五个随机数:

100 - x[4] = delta 5 + 10
x[4]- x[3] = delta 4 …
Run Code Online (Sandbox Code Playgroud)

python algorithm statistics probability

5
推荐指数
1
解决办法
5978
查看次数

熊猫:合并两列名称不同的列?

我正在尝试连接上下两个数据框。不并排连接。

数据帧包含相同的数据,但是,在第一个数据帧中,一列可能具有名称“ObjectType”,而在第二个数据帧中,该列可能具有名称“ObjectClass”。当我做

df_total = pandas.concat ([df0, df1])
Run Code Online (Sandbox Code Playgroud)

df_total 将有两个列名,一个是“ObjectType”,另一个是“ObjectClass”。在这两列中的每一列中,一半的值将是“NaN”。所以我必须手动将这两列合并为一列,这很痛苦。

我可以以某种方式将两列合并为一列吗?我想要一个功能,它可以执行以下操作:

df_total = pandas.merge_many_columns(input=["ObjectType,"ObjectClass"], output=["MyObjectClasses"]
Run Code Online (Sandbox Code Playgroud)

合并两列并创建一个新列。我已经研究过melt() 但它并没有真正做到这一点?

(如果我能指定发生碰撞时会发生什么,比如两列包含值,那么我提供一个 lambda 函数,表示“保留最大值”、“使用平均值”等,这可能会很好)

python merge concatenation dataframe pandas

3
推荐指数
1
解决办法
4802
查看次数