我想快速方便地检查counts数据框中所有列的值是否相同:
在:
import pandas as pd
d = {'names': ['Jim', 'Ted', 'Mal', 'Ted'], 'counts': [3, 4, 3, 3]}
pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)
出:
names counts
0 Jim 3
1 Ted 4
2 Mal 3
3 Ted 3
Run Code Online (Sandbox Code Playgroud)
我想只是一个简单的条件if all counts = same value,然后print('True')。
有快速的方法吗?
我正在将数据解析为列表,并使用熊猫进行构图并写入CSV文件。首先,我的数据被放入一个集合中,其中inv,name和date都是具有大量条目的列表。然后,我使用concat将通过解析的数据集的每次迭代连接成CSV文件,如下所示:
counter = True
data = {'Invention': inv, 'Inventor': name, 'Date': date}
if counter is True:
df = pd.DataFrame(data)
df = df[['Invetion', 'Inventor', 'Date']]
else:
df = pd.concat([df, pd.DataFrame(data)])
df = df[['Invention', 'Inventor', 'Date']]
with open('./new.csv', 'a', encoding = utf-8) as f:
if counter is True:
df.to_csv(f, index = False, header = True)
else:
df.to_csv(f, index = False, header = False)
counter = False
Run Code Online (Sandbox Code Playgroud)
counter = True语句位于我要解析的所有数据的迭代循环之外,因此不会每次都覆盖。
因此,这意味着它仅在我的数据中运行一次即可获取第一个 …
有一堆从.txt文件转换而来的列表,这些列表已被读作字符串集合,如下所示:
['New', 'Jersey', '1', '0', '1', '999']
['West', 'North', 'Central', '1', '0', '100', '90']
Run Code Online (Sandbox Code Playgroud)
这些列表有不同数量的并排词(第一个有2个,第二个有3个,等等.)
我想输出一个新的列表(然后进入一个编译的数据帧),它将并排的单词连接在一起,如:
['New Jersey', '1', '0', '1', '999']
['West North Central', '1', '0', '100', '90']
Run Code Online (Sandbox Code Playgroud)
这将使新列表(和数据帧)具有相同的长度.
只是append(line.split())为每个字符串添加一个新列表很容易,但无法找出if-statement和.join()连接所有单词并分别附加每个数字.
我有一个数据框,其中可能包含与数值混合的对象。
我的目标是将每个值更改为简单整数,但是其中一些值介于-数字之间。
一个最小的工作示例如下所示:
import pandas as pd
d = {'API':[float(4433), float(3344), 6666, '6-9-11', '8-0-11', 9990]}
df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
我尝试:
df['API'] = df['API'].str.replace('-','')
Run Code Online (Sandbox Code Playgroud)
但这给我留下了nan数字类型,因为它只在整个框架中搜索字符串。
输出是:
API
nan
nan
nan
6911
8011
nan
Run Code Online (Sandbox Code Playgroud)
我想要一个输出:
API
4433
3344
6666
6911
8011
9990
Run Code Online (Sandbox Code Playgroud)
所有类型都在的地方int。
有没有一种简单的方法可以只处理系列中的对象类型,但保持实际的数字不变?我在大型数据集(300,000 多行)上使用这种技术,因此类似lambda或 的东西series operations比循环搜索更受青睐。
我有一个数据框,看起来像:
df_pairs
128.437 128.437 121.639 5100.9 5029.08 5029.08 4888.81 4888.81 0 0 0 0 0 0
129.588 129.588 122.79 5102.05 5030.24 5030.24 4959.55 4959.55 4889.96 4889.96 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我想在每一行中保留所有唯一值,并将每个重复值减少到成对值中只有1个。
输出为:
df_unique
128.437 121.639 5100.9 5029.08 4888.81 0 0 0
129.588 122.79 5102.05 5030.24 4959.55 4889.96 0 0
Run Code Online (Sandbox Code Playgroud)
因此,如您现在所见,每行有一个对/ 2,如果该对相等。
伪代码将类似于:
df_unique = pd.DataFrame(columns=df_pairs.columns)
for columns in range(len(df_pairs.columns)):
if df_pairs.iloc[row_element] == df_pairs.iloc[row_element+1]:
unique_element = df_pairs.iloc[row_element]
df_unique[new_row_element] = unique_element
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以快速执行此操作,而无需逐对逐行进行迭代?
我不能简单地删除所有重复项,df.drop_duplicates()因为事实是,行中可能存在重复的值,这些重复值不一定是邻居对,而且如果要在唯一对中保留0,那么我会保留它们。
我有每年每月(1-12)按小时(0-23)重复的值,例如:
Year Month HOUR NAME RATE
2010 1 0 Big 2
2010 1 0 Channelview 4
2010 1 0 Cottonwood 12
2010 1 1 Big 4
2010 1 1 Channelview 9
2010 1 1 Cottonwood 11
.
.
.
2010 2 0 Big 6
2010 2 0 Channelview 10
2010 2 0 Cottonwood 17
.
.
2013 1 0 Big 4
2013 1 0 Channelview 9
2013 1 0 Cottonwood 11
Run Code Online (Sandbox Code Playgroud)
我想按小时(x 轴)绘制一年中每个月的名称的费率数据(y 轴)(持续 7 年)。有没有办法通过.groupby或.loc不需要根据年份和月份创建额外的数据框来做到这一点?