是否有库函数或正确的方法将两个 Pandas 数据框列堆叠在一起?
例如将 4 列变成 2 列:
a1 b1 a2 b2
1 2 3 4
5 6 7 8
Run Code Online (Sandbox Code Playgroud)
到
c d
1 2
5 6
3 4
7 8
Run Code Online (Sandbox Code Playgroud)
我阅读的大部分 Pandas Data Frames 文档只处理连接行和进行行操作,但我确信必须有一种方法来执行我所描述的操作,而且我确信它非常简单。
任何帮助都会很棒。
我试图在 matplotlib 上绘制 2 条不同的曲线,但其中一个图需要散点图,或者没有连接点的线。有没有办法做到这一点?现在,我的绘图代码是:
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(epoch, list_of_gas, 'b')
ax2.plot(temp_times, temperatures, 'r')
ax1.set_ylabel('Pressure (torr)', color='b')
ax2.set_ylabel('Temperature (Celcius)', color='r')
ax1.set_title(folder + ' - ' + gas)
ax1.set_xlabel('time (seconds)')
ax1.set_xlim([0, 1000000])
ax2.set_ylim([0,425])
ax1.set_yscale('log')
ax1.set_ylim([ymin,ymax])
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,我想要ax1.scatter(epoch, list_of_gas, 'b'),但是您不能使用 2 轴散点图。有谁知道解决这个问题的方法?喜欢删除连接点的线?
我有一个大数据集(appx 1GB,例如在字符串 '20000-30000' 中给出了一列薪水范围。我想删除连字符后的所有内容并转换为浮点数。但是这并不总是存在,所以我还需要在那里有一些条件来检查它是否在那里。
除了遍历整个列单独转换每个列之外,是否有一种快速的 Pandas 方法可以做到这一点?我觉得必须有,因为这似乎是一个常见问题,但是类似的问题并不能解决大型数据集的问题。
示例输入将是:
df = pd.DataFrame({'salary': ['200 - 300', '400', '400-500', '600', '-']})
df
Out:
salary
0 200 - 300
1 400
2 400-500
3 600
4 -
Run Code Online (Sandbox Code Playgroud)
对于这些值,首选输出是:
salary
0 200
1 400
2 400
3 600
4 0
Run Code Online (Sandbox Code Playgroud)
该0真的可以是任何填充物的价值,我只是选择0。
所以这个数据集有 200 万条患者记录。我被要求将每个变量二分,这部分已经完成,但任何患者都可以有多个记录,所以我必须按患者对它们进行分组。当我执行此操作时,我会丢失数据;知道为什么吗?这并不是在每个领域都会发生:
我添加示例数据帧的图像来执行 groupby('npaciente),然后您可以看到,对于 value_ counts 中的每一列,它不会在 complicacionescronicas 列中返回任何内容
这是我的代码,无论我做什么,我都会不断收到错误并遵循所有与索引相关的解决方案,有人可以帮助我吗?
site = pd.read_csv('../data/survey_site.csv')
sampled = site.sample(n=1)
site = site.reset_index(drop=True)
sampled = sampled.reset_index(drop=True)
mask = site.mask(site['name'] == sampled['name'])
Run Code Online (Sandbox Code Playgroud) 我有两个数据框,
df1=pd.DataFrame({"Req":["Req 1","Req 2","Req 3"],"Count":[1,2,1]})
Req Count
0 Req 1 1
1 Req 2 2
2 Req 3 1
Run Code Online (Sandbox Code Playgroud)
df2=pd.DataFrame({"Req":["Req 1","Req 2"],"Count":[0,1]})
Req Count
0 Req 1 0
1 Req 2 1
Run Code Online (Sandbox Code Playgroud)
我正在尝试根据“Req”列合并这些 df
我想要的输出是,
Req total from_1 from_2
Req 1 1 1 0
Req 2 3 2 1
Req 3 1 1 0
Run Code Online (Sandbox Code Playgroud)
我试过了,pd.merge(df1, df2, on = "Req", )但没有给出我想要的输出,请帮忙,提前致谢!
我有两个具有相同列但内容不同的数据框。我已经策划了dffinal data frame。现在我想dffinal_no在同一张图上绘制另一个数据框以进行比较。
例如,一个条形图blue colour,以及带有另一种颜色的相同条形图differentiating in y-axis。
这是我绘制第一个数据框的代码的一部分。
dffinal = df[['6month','final-formula','numPatients6month']].drop_duplicates().sort_values(['6month'])
ax=dffinal.plot(kind='bar',x='6month', y='final-formula')
import matplotlib.pyplot as plt
ax2 = ax.twinx()
dffinal.plot(ax=ax2,x='6month', y='numPatients6month')
plt.show()
Run Code Online (Sandbox Code Playgroud)
现在想象我有另一个dffinal_no具有相同列的数据框,我如何在同一个图表中绘制它?
这是我绘制的第一个图表,我希望该图表上的另一个条形图使用另一种颜色。
所以@Mohamed Thasin ah 的答案在某种程度上是我想要的,除了正确的 y 轴不正确。
我想both data frame基于(6month, final-formula)但右边y-axis只是显示患者数量,作为用户的信息。
实际上,我DO NOT希望第一个 df 基于,final-fomula第二个 df 基于NumberPatients.
Update1 jast 作为参考它看起来像我的数据框
dffinal = df[['6month','final-formula','numPatients6month']].drop_duplicates().sort_values(['6month'])
nocidffinal = nocidf[['6month','final-formula','numPatients6month']].drop_duplicates().sort_values(['6month'])
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = …Run Code Online (Sandbox Code Playgroud) 我正在尝试将函数应用于列表。该函数接受一个值并产生另一个值。
例如:
myCoolFunction(75)
Run Code Online (Sandbox Code Playgroud)
会产生一个新的价值
到目前为止,我正在使用这个:
x = 0
newValues = []
for value in my_list:
x = x + 1
newValues.append(myCoolFunction(value))
print(x)
Run Code Online (Sandbox Code Playgroud)
我正在处理大约 125,000 个值,并且它的运行速度似乎不是很有效。
是否有更 Pythonic 的方式将函数应用于值?
我有一个像这样的熊猫数据框,排序如下:
>>> weekly_count.sort_values(by='date_in_weeks', inplace=True)
>>> weekly_count.loc[:9,:]
date_in_weeks count
0 1-2013 362
1 1-2014 378
2 1-2015 201
3 1-2016 294
4 1-2017 300
5 1-2018 297
6 10-2013 329
7 10-2014 314
8 10-2015 324
9 10-2016 322
Run Code Online (Sandbox Code Playgroud)
在上面的数据中,第一列,所有行都date_in_weeks只是“一年中的周数 - 年”。我现在想这样排序:
date_in_weeks count
0 1-2013 362
6 10-2013 329
1 1-2014 378
7 10-2014 314
2 1-2015 201
8 10-2015 324
3 1-2016 294
9 10-2016 322
4 1-2017 300
5 1-2018 297
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
我有包含 3 列的 DataFrame:CustomerId、Amount 和 Status(成功或失败)。DataFrame 没有以任何方式排序。一个 CustomerId 可以在 DataFrame 中重复多次。
我想使用以下逻辑在此 DataFrame 中引入新列:
df[totalamount]= 状态为成功的每个客户的金额总和。
我已经有一个正在运行的代码,但是 df.iterrows 需要太多时间。因此请您提供替代方法,如熊猫矢量化或 numpy 矢量化。
例如,我想从前三列创建 'totalamount' 列:
CustomerID Amount Status totalamount
0 1 5 Success 105 # since both transatctions were successful
1 2 10 Failed 80 # since one transaction was successful
2 3 50 Success 50
3 1 100 Success 105
4 2 80 Success 80
5 4 60 Failed 0
Run Code Online (Sandbox Code Playgroud) data-analysis ×10
pandas ×9
python ×8
dataframe ×7
python-3.x ×3
matplotlib ×2
group-by ×1
lambda ×1
mask ×1
sorting ×1