私信  •  关注

Andy L.

Andy L. 最近创建的主题
Andy L. 最近回复了
5 年前
回复了 Andy L. 创建的主题 » Python如何在dataframe中滑动sum数据?

你的 df np.roll

n = 3
a = np.array(df)
sum(np.roll(a, -x) for x in range(n))[:len(a)-n+1]

Out[29]: array([9, 7, 5, 4])
5 年前
回复了 Andy L. 创建的主题 » python在经理和员工ID之间进行递归查找

查找父/子或id之间的关系与图论有关,因此最好使用 Networkx package . 你需要把它安装到 pip g 使用networkx from_pandas_edgelist Emp_ID . 呼叫 nx.ancestors 对于每个使用genex(或者listcomp,如果您愿意)并将其传递给创建dataframe的员工 df3 . 最后, explode Mgr_ID 然后加入到 df2

import pandas as pd
import networkx as nx

g = nx.from_pandas_edgelist(df2, source='Mgr_ID', target='Emp_ID', create_using=nx.DiGraph)

df3 = pd.DataFrame(([list(nx.ancestors(g, x)), x] for x in df2.Emp_ID), 
                   index=df2.index, columns=['Mgr_ID', 'Emp_ID'])

df_final = df3.explode('Mgr_ID').join(df2[['Type', 'Location']])

Out[23]:
  Mgr_ID  Emp_ID Type Location
0    200     144    O    India
0    500     144    O    India
1    144     220    I       UK
1    500     220    I       UK
1    200     220    I       UK
2    200     155    I       UK
2    500     155    I       UK
3    500     200    I       US
5 年前
回复了 Andy L. 创建的主题 » 在python中,如何将列从unnamed:0重命名为带递增数的列

尝试 rename 有弦的 split

df = df.rename(lambda x: 't'+x.split(':')[-1], axis=1)

Out[502]:
      t0     t1           t2
0  Megan  30000       Botany
1    Ann  24000   Psychology
2   John  24000       Police
3   Mary  45000     Genetics
4    Jay  60000  DataScience

如果你不在乎里面的数字 unnamed:X ,只想打开增量 t ,您可以使用numpy arange np.char.add 建造它们

np.char.add('t', np.arange(df.shape[1]).astype(str))
array(['t0', 't1', 't2'], dtype='<U12')

直接分配给列

df.columns = np.char.add('t', np.arange(df.shape[1]).astype(str))
5 年前
回复了 Andy L. 创建的主题 » 将两个列表压缩到一起-Python

你也可以试试这个

[list(x) for x in zip(*X, *Y)]

Out[222]: [[17, 32], [4, -58]]
5 年前
回复了 Andy L. 创建的主题 » 如何在python中合并同一数据帧中的行?

它是带有列预处理的透视表

s = df.groupby('TEAM').cumcount()
m = s.astype(bool) * ('('+s.astype(str)+')')
df_out = df.set_index(['TEAM', m]).unstack().sort_index(level=1, axis=1).reset_index()
df_out.columns = df_out.columns.map(lambda x: f'{x[0]}{x[1]}')

Out[268]:
  TEAM  A1  A2  A1(1)  A2(1)
0   BC  35  11     41     12
1   HC  22  20     27     70
2   TC  25  50     31     14
6 年前
回复了 Andy L. 创建的主题 » 在python中,只在双引号后拆分字符串

你可以 replace split

s.replace('", ', '"|').split('|')

Out[672]: ['"BLAX"', ' "BLAY"', ' "BLAZ, BLUBB"', ' "BLAP"']