我有像['key','col1','col2','col3']之类的panadas数据框(df),并且我的pandas系列(sr)的索引与数据框中的'key'相同。我想用相同的“键”将系列附加到名为col4的新列的数据框中。我有以下代码:
for index, row in segmention.iterrows():
df[df['key']==row['key']]['col4']=sr.loc[row['key']]
Run Code Online (Sandbox Code Playgroud)
代码很慢。我认为应该有更有效,更好的方法来做到这一点。能否请你帮忙?
我有以下数据:
countries2012 = [
'Bolivia',
'Brazil',
'Sri Lanka',
'Dominican Republic',
'Indonesia',
'Kenya',
'Honduras',
'Mozambique',
'Peru',
'Philipines',
'India',
'Vietnam',
'Thailand',
'USA',
'World'
]
percentage2012 = [
0.042780099,
0.16599952,
0.012373058,
0.019171717,
0.011868674,
0.019239173,
0.00000332,
0.014455196,
0.016006654,
0.132970981,
0.077940824,
0.411752517,
0.017986798,
0.017361808,
0.058076027
]
countries2013 = [
'Bolivia',
'Brazil',
'Sri Lanka',
'Dominican Republic',
'Indonesia',
'Honduras',
'Mozambique',
'Peru',
'Philippines',
'India',
'Vietnam',
'Thailand',
'USA',
'World'
]
percentage2013 = [
0.02736294,
0.117160272,
0.015815952 ,
0.018831589,
0.020409103 ,
0.00000000285,
0.018876854,
0.018998639,
0.117221146,
0.067991687,
0.496110972,
0.019309486,
0.026880553,
0.03503080414999993 …Run Code Online (Sandbox Code Playgroud) 我想将我的数据帧转换为json字符串.如果我只是这样做df.to_json(orient='records'),那么它转换得很好.但是,我想在json字符串中进行几次转换.
这是我的数据帧df:
df =
GROUP HOUR AVG_MINUTES AVG_GRADE
AAA 7 67 5.5
AAA 8 58 6.5
AAA 9 55 4.5
BBB 7 15 5.1
BBB 8 18 5.4
CCC 9 34 5.5
Run Code Online (Sandbox Code Playgroud)
json字符串应如下所示:
[
{
"GROUP":"AAA",
"AVG_MINUTES":[[7,67],[8,58],[9,55]],
"AVG_GRADE":[[7,5.5],[8,6.5],[9,4.5]]
},
{
"GROUP":"BBB",
"AVG_MINUTES":[[7,15],[8,18],[9,34]],
"AVG_GRADE":[[7,5.1],[8,5.4],[9,5.5]]
}
]
Run Code Online (Sandbox Code Playgroud)
我希望HOUR在AVG_MINUTES和中得到每对内的值AVG_GRADE.有可能吗?或者我应该手动完成吗?(这将是一个坏消息,因为数据帧非常大)
df = pd.DataFrame([[1.1, 1.1, 1.1, 2.6, 2.5, 3.4,2.6,2.6,3.4,3.4,2.6,1.1,1.1,3.3], list('AAABBBBABCBDDD'), [1.1, 1.7, 2.5, 2.6, 3.3, 3.8,4.0,4.2,4.3,4.5,4.6,4.7,4.7,4.8], ['x/y/z','x/y','x/y/z/n','x/u','x','x/u/v','x/y/z','x','x/u/v/b','-','x/y','x/y/z','x','x/u/v/w'],['1','4','3','2','4','2','5','3','6','3','5','1','2','5']]).T
df.columns = ['col1','col2','col3','col4','col5']
df
col1 col2 col3 col4 col5
0 1.1 A 1.1 x/y/z 1
1 1.1 A 1.7 x/y 4
2 1.1 A 2.5 x/y/z/n 3
3 2.6 B 2.6 x/u 2
4 2.5 B 3.3 x 4
5 3.4 B 3.8 x/u/v 2
6 2.6 B 4 x/y/z 5
7 2.6 A 4.2 x 3
8 3.4 B 4.3 x/u/v/b 6
9 …Run Code Online (Sandbox Code Playgroud) 这是我的源代码:
plot = sns.catplot(x='Year',
y='Graduation Rate',
col='Group',
hue='Campus',
kind='bar',
col_wrap=4,
data=mbk_grad.sort_values(['Group', 'Campus']))
for i in np.arange(2):
for j in np.arange(4):
ax = plot.facet_axis(i,j)
for p in ax.patches:
if str(p.get_height()) != 'nan':
ax.text(p.get_x() + 0.06, p.get_height() * .8, '{0:.2f}%'.format(p.get_height()), color='white', rotation='vertical', size='large')
plt.show()
Run Code Online (Sandbox Code Playgroud)
输出如下:
如何在第一个标记为第一行之后获取行?为什么我的嵌套 for 循环不起作用?
在 A 列中的值与 B 列中的值相反的情况下,查找重复项的最快方法是什么?
例如,如果我有一个 DataFrame :
Column A Column B
0 C P
1 D C
2 L G
3 A D
4 B P
5 B G
6 P B
7 J T
8 P C
9 J T
Run Code Online (Sandbox Code Playgroud)
结果将是:
Column A Column B
0 C P
8 P C
4 B P
6 P B
Run Code Online (Sandbox Code Playgroud)
我试过 :
df1 = df
df2 = df
for i in df2.index:
res = df1[(df1['Column A'] == df2['Column A'][i]) & (df1['Column …Run Code Online (Sandbox Code Playgroud) 我有一个简单的pandas系列:
import pandas as pd
quantities = [1, 14, 14, 11, 12, 13, 14]
timestamps = [pd.Timestamp(2015, 4, 1), pd.Timestamp(2015, 4, 1), pd.Timestamp(2015, 4, 2), pd.Timestamp(2015, 4, 3), pd.Timestamp(2015, 4, 4), pd.Timestamp(2015, 4, 5), pd.Timestamp(2015, 4, 8)]
series = pd.Series(quantities, index=timestamps)
Run Code Online (Sandbox Code Playgroud)
如下所示:
2015-04-01 1
2015-04-01 14
2015-04-02 14
2015-04-03 11
2015-04-04 12
2015-04-05 13
2015-04-08 14
dtype: int64
Run Code Online (Sandbox Code Playgroud)
我想填写缺少的日期,即2015-04-06 = NaN,2015-04-07 = NaN但保持系列原样,即:
2015-04-01 1
2015-04-01 14
2015-04-02 14
2015-04-03 11
2015-04-04 12
2015-04-05 …Run Code Online (Sandbox Code Playgroud) 我有一个 6k 列宽的数据框,格式为:
import pandas as pd
df = pd.DataFrame([('jan 1 2000','a','b','c',1,2,3,'aa','bb','cc'), ('jan 2 2000','d', 'e', 'f', 4, 5, 6, 'dd', 'ee', 'ff')],
columns=['date','a_1', 'a_2', 'a_3','b_1', 'b_2', 'b_3','c_1', 'c_2', 'c_3'])
df
date a_1 a_2 a_3 b_1 b_2 b_3 c_1 c_2 c_3
0 jan 1 2000 a b c 1 2 3 aa bb cc
1 jan 2 2000 d e f 4 5 6 dd ee ff
Run Code Online (Sandbox Code Playgroud)
我想:
我看过: Pandas 按名称将几组列融化成多个目标列和Pandas:多列合并成一列,但无法形成正确的解决方案。
任何建议表示赞赏
我们如何转换包含 MultiIndex 列的 Pandas DataFrame,例如
FB AAPL
open volume open volume
date
2019-10-30 189.56 28734995 244.76 31130522
2019-10-31 196.70 42286529 247.24 34790520
2019-11-01 192.85 21711829 249.54 37781334
Run Code Online (Sandbox Code Playgroud)
到一个具有常规列的索引,其中索引级别之一现在是所有行中的一列
open volume ticker
date
2019-10-30 189.56 28734995 FB
2019-10-31 196.70 42286529 FB
2019-11-01 192.85 21711829 FB
2019-10-30 244.76 31130522 AAPL
2019-10-31 247.24 34790520 AAPL
2019-11-01 249.54 37781334 AAPL
Run Code Online (Sandbox Code Playgroud) 我仍在学习如何使用数据框,但仍然无法做到这一点......我得到了这样的数据框:
A B C D1 D2 D3
1 2 3 5 6 7
Run Code Online (Sandbox Code Playgroud)
我需要它看起来像:
A B C DA D
1 2 3 D1 5
1 2 3 D2 6
1 2 3 D3 7
Run Code Online (Sandbox Code Playgroud)
我知道我应该使用 groupby 之类的东西,但我仍然找不到好的文档。
pandas ×8
python ×5
python-3.x ×3
dataframe ×2
matplotlib ×2
seaborn ×2
inversion ×1
json ×1
multi-index ×1
series ×1