我正在尝试基于公共列合并多个DataFrame.这将在循环中完成,原始DataFrame可能没有所有列,因此需要外部合并.但是,当我在几个不同的DataFrames列上执行此操作时,使用后缀_x和_y复制.我正在寻找一个填充数据的DataFrame,并且只有在以前不存在的情况下才添加列.
df1=pd.DataFrame({'Company Name':['A','B','C','D'],'Data1':[1,34,23,66],'Data2':[13,54,5354,443]})
Company Name Data1 Data2
0 A 1 13
1 B 34 54
2 C 23 5354
3 D 66 443
Run Code Online (Sandbox Code Playgroud)
第二个DataFrame,包含一些公司的附加信息:
pd.DataFrame({'Company Name':['A','B'],'Address': ['str1', 'str2'], 'Phone': ['str1a', 'str2a']})
Company Name Address Phone
0 A str1 str1a
1 B str2 str2a
Run Code Online (Sandbox Code Playgroud)
如果我想组合这两个,它将使用on = Column成功合并为一个:
df1=pd.merge(df1,df2, on='Company Name', how='outer')
Company Name Data1 Data2 Address Phone
0 A 1 13 str1 str1a
1 B 34 54 str2 str2a
2 C 23 5354 NaN NaN
3 D 66 443 NaN NaN …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中有两列(年龄,日期),指示一个人的年龄和当前日期。我想根据该数据估算出出生日期。我想拟合一个线性模型并找到截取,但它不能开箱即用。Pandas 不再支持该ols()功能。
import pandas as pd
import seaborn as sns
from pandas import Timestamp
age = [30, 31, 31, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 34, 34]
date = [Timestamp('2001-02-10 00:01:00'),
Timestamp('2001-11-12 00:01:00'),
Timestamp('2002-02-27 00:01:00'),
Timestamp('2002-07-05 00:01:00'),
Timestamp('2002-07-20 00:01:00'),
Timestamp('2002-08-15 00:01:00'),
Timestamp('2002-09-08 00:01:00'),
Timestamp('2002-10-15 00:01:00'),
Timestamp('2002-12-21 00:01:00'),
Timestamp('2003-04-04 00:01:00'),
Timestamp('2003-07-29 00:01:00'),
Timestamp('2003-08-11 00:01:00'),
Timestamp('2004-02-28 00:01:00'),
Timestamp('2005-01-11 00:01:00'),
Timestamp('2005-01-12 00:01:00')]
df = pd.DataFrame({'age': age, 'date': date})
sns.regplot(df.age, df.date)
Run Code Online (Sandbox Code Playgroud)
抛出错误:
类型错误:此数据类型不允许缩减操作“mean”
将数据转换为可拟合的数据并将其转换回日期并估计置信区间的最佳方法是什么?是否有任何软件包可以开箱即用地处理 pandas.Timestamps ?例如 scikit-learn?
我有一个如下所示的数据框:
username group
user1 [A]
user2 [B, C]
user3 [A, B, C]
user4 [A, B]
Run Code Online (Sandbox Code Playgroud)
我希望结果看起来像这样:
username group
user3 [A, B, C]
user4 [A, B]
user2 [B, C]
user1 [A]
Run Code Online (Sandbox Code Playgroud)
我查找了sort_values的文档,它似乎主要涵盖0-9或AZ排序..提前感谢
I have the following dataframe, where I would like to sort the columns according to the name.
1 | 13_1 | 13_10| 13_2 | 2 | 3
9 | 31 | 2 | 1 | 3 | 4
Run Code Online (Sandbox Code Playgroud)
I am trying to sort the columns in the following way:
1 | 2 | 3 | 13_1 | 13_2 | 13_10
9 | 3 | 4 | 31 | 1 | 2
Run Code Online (Sandbox Code Playgroud)
I've been trying to solve this using df.sort_index(axis=1, inplace=True) …
我想使用 groupby.first() 函数来查找组的第一个非空值并将该值转换为组中的每一行。
我尝试了以下代码:
import pandas as pd
import numpy as np
raw_data = {'col1': ['a','a','a','b','b','b','b','b','b','c','c','c','c','c'],
'col2': [np.nan,np.nan,6,0,2,0,8,2,2,3,0,0,4,5]}
df=pd.DataFrame(raw_data)
df['col3'] = df.groupby('col1')['col2'].transform(lambda x: x.first())
df
Run Code Online (Sandbox Code Playgroud)
我想得到一个看起来像这样的 df:
col1 col2 col3
a NaN 6
a NaN 6
a 6 6
b 0 0
b 2 0
b 0 0
b 8 0
b 2 0
b 2 0
c 3 3
c 0 3
c 0 3
c 4 3
c 5 3
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:TypeError: first() missing 1 required positional argument: 'offset' …
我有这个表格,但我想把它做成一个简单的表格。现有的表格是这样的:
group mp_current mh_current mp_total mh_total
contractor 25 4825 0 0
Run Code Online (Sandbox Code Playgroud)
我想将表格转换成这种形式:
group mp mh period
contractor 25 4825 current
contractor 0 0 total
Run Code Online (Sandbox Code Playgroud)
我将有一个专门用于 mp 和 mh 的列,还有一个额外的列作为周期列。
我如何在 python 中执行此操作?
我有一个数据框如下:
df = pd.DataFrame({'Id': ['abs1', 'abs2', 'abs3', 'plo2', '201805', '201806', '202011', 'pctx1'],
'Date': ['2021-06-15', '2021-06-13', '2021-06-07', '2021-05-30',
'2021-05-12', '2021-04-28', '2021-04-15', '2021-02-01']})
Run Code Online (Sandbox Code Playgroud)
我希望将日期列分成几个组,在一个新列中,称为Date_Bin,规则是:从今天的日期开始,如果日期中的值小于7天,那么新列中的值将是“最后7天”天”,如果该值距离今天小于 14 天且大于 7 天,则值为“7 到 14 天”,如果该值小于 30 天且大于 14 天,则值为“14 到 14 天” 30天,30到60天,60到90天,90天以上都是同样的逻辑。理想的输出是这样的:
Id Date Date_Bin
0 abs1 2021-06-15 last 7 days
1 abs2 2021-06-13 last 7 days
2 abs3 2021-06-07 7 to 14 days
3 plo2 2021-05-30 14 to 30 days
4 201805 2021-05-10 30 to 60 days
5 201806 2021-04-28 30 to 60 days …Run Code Online (Sandbox Code Playgroud) 我有以下数据集:
import pandas as pd
import numpy as np
%matplotlib inline
df = pd.DataFrame({'movie' : ['A', 'B','C','D'],
'genres': ['Science Fiction|Romance|Family', 'Action|Romance',
'Family|Drama','Mystery|Science Fiction|Drama']},
index=range(4))
df
Run Code Online (Sandbox Code Playgroud)
我的尝试
# Parse unique genre from all the movies
gen = []
for g in df['genres']:
gg = g.split('|')
gen = gen + gg
gen = list(set(gen))
print(gen)
df['genres'].value_counts().plot(kind='pie')
Run Code Online (Sandbox Code Playgroud)
但我想为每个单独的类型饼图.
我们如何获得每种独特类型的电影数量类型?
import pandas as pd
d = {
'resource': [1,2,3,4,5,6,7],
'branch': ['a', 'b', 'c', 'a', 'a', 'c', 'b'],
'utilization': [0.7, 0.76, 0.9, 0.3, 0.55, 0.87, 0.71]
}
df = pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)
像这样的东西:
df.groupby('branch')[['resource', 'utilization']].nlargest(2, 'utilization')
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
f = lambda x: x.sort_values('utilization', ascending=False)
df.groupby('branch', sort=False).apply(f).nlargest(3, 'utilization')
Run Code Online (Sandbox Code Playgroud)
但是当我在每组中需要前N时,它会让我在所有记录中排名前三
resource branch utilization
branch
c 2 3 c 0.90
5 6 c 0.87
b 1 2 b 0.76
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何计算2个字符串的给定组合,而不管哪个字符串是第一/第二。
这是我的代码:
import pandas as pd
mylist = [[('Smith JR', 'Kim YY'), ('Smith JR', 'Ron AA'), ('Kim YY', 'Ron AA')],
[('Kim YY', 'Smith JR')], [('Smith JR', 'Ron AA')]]
flat_list = [item for sublist in mylist for item in sublist]
df = pd.DataFrame(flat_list, columns=["From", "To"])
df_graph = df.groupby(["From", "To"]).size().reset_index()
df_graph.columns = ["From", "To", "Count"]
print(df_graph)
Run Code Online (Sandbox Code Playgroud)
这使:
From To Count
0 Kim YY Ron AA 1
1 Kim YY Smith JR 1
2 Smith JR Kim YY 1
3 Smith JR Ron …Run Code Online (Sandbox Code Playgroud) pandas ×10
python ×8
datetime ×1
imdb ×1
matplotlib ×1
plot ×1
python-3.x ×1
scikit-learn ×1
seaborn ×1
transform ×1