我使用python-pandas数据帧,我有一个包含用户及其数据的大型数据帧.每个用户可以有多行.我想为每个用户采样1行.我目前的解决方案效率似乎不高
df1 = pd.DataFrame({'User': ['user1', 'user1', 'user2', 'user3', 'user2', 'user3'],
'B': ['B', 'B1', 'B2', 'B3','B4','B5'],
'C': ['C', 'C1', 'C2', 'C3','C4','C5'],
'D': ['D', 'D1', 'D2', 'D3','D4','D5'],
'E': ['E', 'E1', 'E2', 'E3','E4','E5']},
index=[0, 1, 2, 3,4,5])
df1
>> B C D E User
0 B C D E user1
1 B1 C1 D1 E1 user1
2 B2 C2 D2 E2 user2
3 B3 C3 D3 E3 user3
4 B4 C4 D4 E4 user2
5 B5 C5 D5 E5 user3
userList = list(df1.User.unique()) …Run Code Online (Sandbox Code Playgroud) 拥有df至少列C1,C2,C3的pandas数据框如何将所有唯一的C1,C2,C3值作为新的DataFrame?
换句话说,类似于:
SELECT C1,C2,C3
FROM T
GROUP BY C1,C2,C3
Run Code Online (Sandbox Code Playgroud)
试过了
print df.groupby(by=['C1','C2','C3'])
Run Code Online (Sandbox Code Playgroud)
但我得到了
<pandas.core.groupby.DataFrameGroupBy object at 0x000000000769A9E8>
Run Code Online (Sandbox Code Playgroud) 如何从数据框中获取所有现有的重复记录集(基于列)?
我有一个数据帧如下:
flight_id | from_location | to_location | schedule |
1 | Vancouver | Toronto | 3-Jan |
2 | Amsterdam | Tokyo | 15-Feb |
4 | Fairbanks | Glasgow | 12-Jan |
9 | Halmstad | Athens | 21-Jan |
3 | Brisbane | Lisbon | 4-Feb |
4 | Johannesburg | Venice | 12-Jan |
9 | LosAngeles | Perth | 3-Mar |
Run Code Online (Sandbox Code Playgroud)
这里的flight_id是我需要检查重复项的列.并且有两组重复.
此特定示例的输出应为 - [(2,5),(3,6)].记录索引值的元组列表
我试图确定两个时间序列使用python的pandas库重叠的时间百分比.数据是非同步的,因此每个数据点的时间不对齐.这是一个例子:
时间序列1
2016-10-05 11:50:02.000734 0.50
2016-10-05 11:50:03.000033 0.25
2016-10-05 11:50:10.000479 0.50
2016-10-05 11:50:15.000234 0.25
2016-10-05 11:50:37.000199 0.50
2016-10-05 11:50:49.000401 0.50
2016-10-05 11:50:51.000362 0.25
2016-10-05 11:50:53.000424 0.75
2016-10-05 11:50:53.000982 0.25
2016-10-05 11:50:58.000606 0.75
Run Code Online (Sandbox Code Playgroud)
时间序列2
2016-10-05 11:50:07.000537 0.50
2016-10-05 11:50:11.000994 0.50
2016-10-05 11:50:19.000181 0.50
2016-10-05 11:50:35.000578 0.50
2016-10-05 11:50:46.000761 0.50
2016-10-05 11:50:49.000295 0.75
2016-10-05 11:50:51.000835 0.75
2016-10-05 11:50:55.000792 0.25
2016-10-05 11:50:55.000904 0.75
2016-10-05 11:50:57.000444 0.75
Run Code Online (Sandbox Code Playgroud)
假设系列保持其值直到下一次更改,确定它们具有相同值的时间百分比的最有效方法是什么?
例
让我们计算这些系列重叠的时间从11:50:07.000537开始,到2016-10-05 11:50:57.000444 0.75结束,因为我们有这个时期的两个系列的数据.有重叠的时间:
我有这样一张桌子:
CustID Purchase Time
A Item1 01/01/2011
B Item2 01/01/2011
C Item1 01/02/2011
A Item2 03/01/2011
Run Code Online (Sandbox Code Playgroud)
我想在表中选择CustID显示多于1的行.
我有一个数据框,我正在进行groupby()以获取列值的计数.我正在尝试为"总百分比"添加一个额外的列.我不知道如何做到这一点.
我看了几个groupby选项,但似乎找不到合适的东西.
我的数据框看起来像这样:
DAYSLATE
DAYSLATE
-7 days 1
-5 days 2
-3 days 8
-2 days 9
-1 days 45
0 days 589
1 days 33
2 days 8
3 days 16
4 days 14
5 days 16
6 days 2
7 days 6
8 days 2
9 days 2
10 days 1
Run Code Online (Sandbox Code Playgroud) 这个问题没有得到满意的答案,所以我再问一次。
假设我有以下 Pandas DataFrame:
df1 = pd.DataFrame({'group': ['a', 'a', 'b', 'b'], 'values': [1, 1, 2, 2]})
Run Code Online (Sandbox Code Playgroud)
我按第一列“组”分组:
g1 = df1.groupby('group')
Run Code Online (Sandbox Code Playgroud)
我现在已经创建了一个“ DataFrame GroupBy”。然后我从 GroupBy 对象中提取第一列:
g1_1st_column = g1['group']
Run Code Online (Sandbox Code Playgroud)
该类型g1_1st_column的是“pandas.core.groupby。系列的GroupBy”。请注意,它不再是“ DataFrame GroupBy”。
我的问题是,如何将 SeriesGroupBy 对象转换回 DataFrame 对象?我尝试使用 .to_frame() 方法,并得到以下错误:
g1_1st_column = g1['group'].to_frame()
Run Code Online (Sandbox Code Playgroud)
AttributeError:无法访问“SeriesGroupBy”对象的可调用属性“to_frame”,请尝试使用“apply”方法。
我将如何使用 apply 方法或其他一些方法转换为 DataFrame?
我有DF:
data = [["John","144","Smith","200"], ["Mia","220","John","144"],["Caleb","155","Smith","200"],["Smith","200","Jason","500"]]
data_frame = pd.DataFrame(data,columns = ["Name","ID","Manager_name","Manager_ID"])
data_frame
Run Code Online (Sandbox Code Playgroud)
OP:
Name ID Manager_name Manager_ID
0 John 144 Smith 200
1 Mia 220 John 144
2 Caleb 155 Smith 200
3 Smith 200 Jason 500
Run Code Online (Sandbox Code Playgroud)
我正在尝试计算“名称”列中每个人下报告的人数。
逻辑是:
计算单个报告的人数以及该链中报告的人数。例如史密斯;约翰和卡勒布向史密斯报告,所以2 + 1,而米娅向约翰报告(他已经向史密斯报告),所以总数为3。
对于杰森-> 1同样,因为史密斯向他报告,并且3个人已经向史密斯报告,所以总数为4。
我知道如何以某种递归的方式Python地做到这一点,有没有一种方法可以在Pandas中有效地做到这一点。有什么建议么?
预期的OP:
Name Number of people reporting
John 1
Mia 0
Caleb 0
Smith 3
Jason 4
Run Code Online (Sandbox Code Playgroud) 我是一名前Excel高级用户,为自己的罪过而pent悔。我需要帮助为我重新创建通用计算。
我正在尝试计算贷款组合的绩效。在分子中,我正在计算累计损失总额。在分母中,我需要包含在累计总额中的贷款的原始余额。
我无法弄清楚如何在Pandas中进行条件分组。在Excel中,这非常简单,因此我希望自己对此有所考虑。
我在StackOverflow的问题上找不到很多,但这是最接近的:python pandas条件累积总和
我无法弄清楚的是我的条件基于索引中的值并包含在列中
以下是我的数据:
| Loan | Origination | Balance | NCO Date | NCO | As of Date | Age (Months) | NCO Age (Months) |
|---------|-------------|---------|-----------|-----|------------|--------------|------------------|
| Loan 1 | 1/31/2011 | 1000 | 1/31/2018 | 25 | 5/31/2019 | 100 | 84 |
| Loan 2 | 3/31/2011 | 2500 | | 0 | 5/31/2019 | 98 | |
| Loan 3 | 5/31/2011 | 3000 | 1/31/2019 | 15 | 5/31/2019 | …Run Code Online (Sandbox Code Playgroud) 我在数据框下方有字段“年龄”,需要从数据框中找到前 3 个最小年龄
DF = pd.DataFrame.from_dict({'Name':['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], 'Age':[18, 45, 35, 70, 23, 24, 50, 65, 18, 23]})
DF['Age'].min()
Run Code Online (Sandbox Code Playgroud)
想要列表中的前两个年龄即 18、23,如何实现?
注意:DataFrame - DF 包含 Age Duplicates,即 18 和 23 重复两次,需要唯一值。
pandas ×10
pandas-groupby ×10
python ×10
dataframe ×5
group-by ×4
apply ×1
performance ×1
python-3.x ×1
time-series ×1