TL;DR:我们如何在 Pandas 中使用任何类型的聚合实现类似于Group By Roll Up 的效果?(本学期感谢@Scott Boston)
我有以下数据框:
P Q R S T
0 PLAC NR F HOL F
1 PLAC NR F NHOL F
2 TRTB NR M NHOL M
3 PLAC NR M NHOL M
4 PLAC NR F NHOL F
5 PLAC R M NHOL M
6 TRTA R F HOL F
7 TRTA NR F HOL F
8 TRTB NR F NHOL F
9 PLAC NR F NHOL F
10 …Run Code Online (Sandbox Code Playgroud) 请考虑以下程序作为最小可重现示例 -MRE:
import pandas as pd
import pyarrow
from pyarrow import parquet
def foo():
print(pyarrow.__file__)
print('version:',pyarrow.cpp_version)
print('-----------------------------------------------------')
df = pd.DataFrame({'A': [1,2,3], 'B':['dummy']*3})
print('Orignal DataFrame:\n', df)
print('-----------------------------------------------------')
_table = pyarrow.Table.from_pandas(df)
parquet.write_table(_table, 'foo')
_table = parquet.read_table('foo', columns=[]) #passing empty list to columns arg
df = _table.to_pandas()
print('After reading from file with columns=[]:\n', df)
print('-----------------------------------------------------')
print('Not passing [] to columns parameter')
_table = parquet.read_table('foo') #Not passing any list
df = _table.to_pandas()
print(df)
print('-----------------------------------------------------')
x = input('press any key to exit: ') …Run Code Online (Sandbox Code Playgroud) 我有以下两个数据框:
>>> df1
c1 c2 v1 v2
0 A NaN 9 2
1 B NaN 2 5
2 C NaN 3 5
3 D NaN 4 2
>>> df2
c1 c2 v1 v2
0 A P 4 1
1 A T 3 1
2 A Y 2 0
3 B P 0 1
4 B T 2 2
5 B Y 0 2
6 C P 1 2
7 C T 1 2
8 C Y 1 1
9 D …Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框:
USUBJID IDVAR IDVARVAL QNAM QVAL
0 Dummy-01-0001 AESEQ 1.0 AEdummy1 2012-02-15
1 Dummy-01-0002 AESEQ 1.0 AEdummy1 2012-02-23
2 Dummy-01-0004 AESEQ 1.0 AEdummy1 2012-02-06
3 Dummy-01-0004 AESEQ 2.0 AEdummy1 2012-03-10
4 Dummy-01-0005 AESEQ 1.0 AEdummy1 2012-03-10
5 Dummy-01-0001 AESPID 1 dummy2AE Gastrointestinal disorders
6 Dummy-01-0002 AESPID 1 dummy2AE Nervous system disorder
7 Dummy-01-0004 AESPID 2 dummy2AE Gastrointestinal disorders
8 Dummy-01-0004 AESPID 1 dummy2AE Nervous system disorder
9 Dummy-01-0005 AESPID 1 dummy2AE Gastrointestinal disorders
Run Code Online (Sandbox Code Playgroud)
以上数据框只是一个示例,请使用以下代码将更多数据放入数据框。
df = pd.DataFrame({'USUBJID': {0: 'Dummy-01-0001', 1: …Run Code Online (Sandbox Code Playgroud) 据我了解,Flatten 会删除除一个维度之外的所有维度。例如,我理解flatten():
> t = torch.ones(4, 3)
> t
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
> flatten(t)
tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
Run Code Online (Sandbox Code Playgroud)
但是,我不明白Flatten,特别是我不明白文档中这段代码的含义:
>>> input = torch.randn(32, 1, 5, 5)
>>> m = nn.Sequential(
>>> nn.Conv2d(1, 32, 5, 1, 1),
>>> nn.Flatten()
>>> )
>>> output = m(input)
>>> output.size()
torch.Size([32, 288])
Run Code Online (Sandbox Code Playgroud)
我觉得输出应该有大小[160],因为32*5=160.
Q1. 那么为什么它输出尺寸[32,288]呢? …
我可以在 pandas DataFrame 的现有列上创建另一个索引吗?就像CREATE INDEXSQL 中所做的那样。例如:我的 DataFrame 有两列id_a和id_b,它们对于每一行都是唯一的,我想有时用 索引行,id_a有时用 索引行id_b(所以我认为MultiIndex对我来说不起作用)。id_a我希望这些操作能够快速进行,因此必须为和创建“索引” id_b。
我目前可以在 pandas 中做到这一点吗?
我有一个表熊猫 DF,它看起来像
| 奴隶 | 起始地址0 | end_addr0 | 起始地址1 | end_addr1 | 起始地址2 | end_addr2 | |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 10000000 | 1FFFFFFF | NaN | NaN | NaN | NaN |
| 1 | 1 | 2000万 | 2007FFFF | 40000000 | 40005FFF | NaN | NaN |
| 2 | 1 | 2000万 | 2007FFFF | 2010万 | 201FFFFF | NaN | NaN |
| 3 | 2 | 2020万 | 202FFFFF | 20080000 | 20085FFF | 40006000 | 400FFFFF |
| 4 | 3 | 0 | 0FFFFFFF | NaN | NaN | NaN | NaN |
| 5 | 4 | 2030万 | 203FFFFF | NaN | NaN | NaN | NaN |
| 6 | 5 | 20400000 | 204FFFFF | NaN | NaN | NaN | NaN |
对于每个从属编号,我需要将其转换为范围列表(元组)。例如,
Slave1_list = ( (20000000, 2007FFFF), (40000000, 40005FFF), (20100000, 201FFFFF))
Run Code Online (Sandbox Code Playgroud)
从站(行)和地址对(列)的数量可以变化。
谢谢
编辑 …
我面临着对数据框中的非 NA 值进行分组和转换的问题。
所以我的数据框是这样的:
| 姓名 | 价值 |
|---|---|
| A | 1 |
| A | 2 |
| A | 南 |
| 乙 | 3 |
| 乙 | 7 |
| 乙 | 9 |
| 乙 | 南 |
我想要的最终输出:
| 姓名 | 价值 | 重量1 | 重量2 |
|---|---|---|---|
| A | 1 | 0.33 | 0.5 |
| A | 2 | 0.33 | 0.5 |
| A | 南 | 0.33 | 南 |
| 乙 | 3 | 0.25 | 0.33 |
| 乙 | 7 | 0.25 | 0.33 |
| 乙 | 9 | 0.25 | 0.33 |
| 乙 | 南 | 0.25 | 南 |
我知道这可能听起来微不足道,但我无法让 Weight 2 在 column 的不同分组类别中完美运行Name。
这是我获取专栏的方式Weight 1:
df['Weight 1'] = df.groupby(['Name']).transform(lambda x: 1/len(x))
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试跟踪Weight 2,但引发了 DivisionByZero 警告。输出不正确。
df['Weight 2'] = …Run Code Online (Sandbox Code Playgroud) 我很高兴能与大家分享我的问题,并期待向大家学习。我当前的问题是def calculating_hma无法获得正确的结果:
#python27
#inputs
period = 9
Coin_pair = "USD-BTC"
Unit = thirtyMin''
def getClosingPrices(coin_pair, period, unit):
historical_data = api.getHistoricalData(coin_pair, period, unit)
closing_prices = []
for i in historical_data:
closing_prices.append(i['C'])
return closing_prices
def calculate_sma(coin_pair, period, unit):
total_closing = sum(getClosingPrices(coin_pair, period, unit))
return (total_closing / period)
def calculate_ema(coin_pair, period, unit):
closing_prices = getClosingPrices(coin_pair, period, unit)
previous_EMA = calculate_sma(coin_pair, period, unit)
constant = (2 / (period + 1))
current_EMA = (closing_prices[-1] * (2 / (1 + period))) + (previous_EMA * …Run Code Online (Sandbox Code Playgroud) 我想知道与下面绘制的代码类似的代码在 Python 中是否合法并且可以安全使用:
# Example usage of a lambda which executes a statement and returns the changed operand
skip_first = lambda iterator: (next(iterator), iterator)[1]
Run Code Online (Sandbox Code Playgroud)
使用这样的构造并期望 lambda 的返回值是一个从原始迭代器的第二个元素开始的迭代器(如果没有抛出异常)是否安全?
或者 fi Cythonnext出于某种原因优化调用可能是合法的(即,因为它丢弃了结果值,因为未定义元组中的执行顺序,并且它可以确定我们以任何一种方式丢弃第一个值?)
f = iter([0, 1, 2, 3, 4])
print(list(skip_first(f)))
Run Code Online (Sandbox Code Playgroud)